图像处理 - 在保存为jpg之前转换透明像素

时间:2012-02-24 18:54:34

标签: c# image-manipulation

我正在为jpeg保存一个透明背景的图像。 有没有办法将透明像素转换为某种颜色而不迭代所有像素?

这是我正在使用的代码(也是 - 第一行是常用的方法吗?有不同的编码器吗?)

public void SaveImage(Bitmap image, string path)
{
    var encoder = ImageCodecInfo.GetImageEncoders().FirstOrDefault(c => c.MimeType == "image/jpeg");
    var encodeParams = new EncoderParameters(1);
    encodeParams.Param[0] = new EncoderParameter(Encoder.Quality, (long)100);

    image.Save(path, encoder, encodeParams);
}

2 个答案:

答案 0 :(得分:1)

image.MakeTransparent(image.GetPixel(0, 0));

但是这可以保存为png因为遗憾的是jpg不支持透明度

答案 1 :(得分:0)

通常的解决方案是使用所需的背景颜色制作位图图像,将图像渲染到其中,然后将此位图保存/转换为图像。

检查Graphics.FromImage。这将为您提供位图的图形渲染对象。