Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Проблема при сохранении изображения


Автор: andreyn 2.5.2008, 12:54
При попытке компиляции следующего кода
Код

Bitmap image = new Bitmap(Server.MapPath("maps/spb.JPG"));
            Graphics g = Graphics.FromImage(image);
            g.FillRectangle(Brushes.Red, 220, 300, 20, 20);
            image.Save(Server.MapPath("maps/spb.JPG"));
            g.Dispose;
            image.Dispose;


 , получаю ошибку
System.Runtime.InteropServices.ExternalException: A generic error occurred in GDI+.

на строку 
Код

image.Save(Server.MapPath("maps/spb.JPG"));

Подскажите что это и как лечится?

Автор: PashaPash 2.5.2008, 14:01
andreyn, http://support.microsoft.com/?id=814675 - описание причин и workaround.

Автор: kosten_spb 2.5.2008, 15:48
посмотри http://kosten-spb.blogspot.com/2008/04/png-gdi.html
вроде бы похожая ситуация

Автор: andreyn 2.5.2008, 22:53
Народ, глянул ваши ссылки, но на микрософте не совсем понятно как решить данную ситуацию, а по ссылке на похожую ситуацию, там речь идет о PNG , но у меня джипег и ситуация несколько отличается. 
Если можно приведите пример кода.
Спасибо!

Автор: kosten_spb 3.5.2008, 18:15
andreyn
попробуй сделать так, как предлагается по ссылке где про PNG должно помочь.

Автор: andreyn 3.5.2008, 20:42
kosten_spb, можно пример работающего кода? мне проще так понять.

Автор: kosten_spb 3.5.2008, 23:17
Цитата(andreyn @  3.5.2008,  18:42 Найти цитируемый пост)
можно пример работающего кода? 

а головой подумать? smile 

Код

        System.Drawing.Bitmap image = new Bitmap(Server.MapPath("/test/map/av.jpg"));
        Graphics g = Graphics.FromImage(image);
        g.FillRectangle(Brushes.Red, 220, 300, 20, 20);

        MemoryStream ms = new MemoryStream();
        image.Save(ms, ImageFormat.Jpeg);
        FileStream fs = File.OpenWrite(Server.MapPath("/test/map/av1.jpg"));
        ms.WriteTo(fs);
        fs.Flush();
        fs.Close();
    
        g.Dispose();
        image.Dispose();

Отличие от твоего, что сохраняется в другой файл, но с этой задачкой сам разберешся.
Вся соль, в той части кода, которая отделена пустыми строками.

Автор: andreyn 4.5.2008, 08:06
kosten_spb, Спасибо.
Стараюсь думать головой, но не всегда получается разобраться самому.
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)