Как избежать дизеринга с помощью Graphics.DrawImage?

Я хочу нарисовать одну картинку поверх другой и сбросить ее в HttpResponse. Мой код выглядит так:

//file name points to a gif image
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(filename);
System.Drawing.Image smallImage = System.Drawing.Image.FromFile(smallFilename);

using(Bitmap tempImage = new Bitmap(originalImage))
{
    Graphics graphics = Graphics.FromImage(tempImage);
    PointF ulCorner = new PointF(10.0F, 10.0F);
    graphics.DrawImage(windfarmImage, ulCorner);
}

tempImage.Save(Response.OutputStream, ImageFormat.Gif);

Если я изменю последнюю строку на

tempImage.Save(Response.OutputStream, ImageFormat.Jpeg);

это решает проблему. Но в результате у меня должен быть png. Можно ли как-то сохранить палитру из оригинального файла? Исходный файл - это gif, поэтому в результате должно быть возможно получить gif без потери цветов, я думаю.


person Georgy Bolyuba    schedule 09.09.2009    source источник


Ответы (1)


Если исходные изображения имеют большое количество цветов, то сохранение файла в формате Gif может привести к некоторому сглаживанию, поскольку размер палитры уменьшен до 256 цветов.

Требуется ли сохранять файл в формате Gif или можно попробовать другой формат (например, Jpeg или Png)?

person Tim Greaves    schedule 09.09.2009
comment
исходный файл - gif, и я должен сохранить его таким - person Georgy Bolyuba; 09.09.2009