我正在复制一张图片。(我的实际代码正在调整图片大小,但这与我的问题无关。)我的代码大致如下。
Image src = ...
using (Image dest = new Bitmap(width, height))
{
Graphics graph = Graphics.FromImage(dest);
graph.InterpolationMode = InterpolationMode.HighQualityBicubic;
graph.DrawImage(src, 0, 0, width, height);
dest.Save(filename, saveFormat);
}
这似乎效果很好,除非从带有透明度的图像(例如GIF)或带有Alpha通道的图像(例如PNG)中加载src
。
我该如何让DrawImage()
将透明度/Alpha通道传输到新图像,并在保存文件时保留它们?
saveFormat
变量的值是什么?它应该是PixelFormat.Format32bppArgb
(或另一种带有 alpha 通道处理的格式)。也可以尝试:using (Image dest = new Bitmap(width, height, PixelFormat.Format32bppArgb))
。 - Lukasz MsaveFormat
将根据输入文件的格式而变化。如果输入文件不支持alpha通道,则可以安全地假定图像不包含alpha通道像素。 - Jonathan WoodsaveFormat
的值是什么呢? :) - Lukasz MImageFormat.Gif
。 - Jonathan Wood