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

本文关键字:转换 透明 像素 jpg 保存 图像处理 | 更新日期: 2023-09-27 18:25:55

我正在将具有透明背景的图像保存为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);
}

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

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

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

通常的解决方案是制作一个具有所需背景颜色的位图图像,将图像渲染为该图像,并将该位图保存/转换为图像。

检查Graphics.FromImage。这将为位图提供一个Graphics渲染对象。