我正在为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);
}
答案 0 :(得分:1)
image.MakeTransparent(image.GetPixel(0, 0));
但是这可以保存为png因为遗憾的是jpg不支持透明度
答案 1 :(得分:0)
通常的解决方案是使用所需的背景颜色制作位图图像,将图像渲染到其中,然后将此位图保存/转换为图像。
检查Graphics.FromImage。这将为您提供位图的图形渲染对象。