如何将 JPG 图像转换为 8 位 PNG 图像并保存在 C# 中



我使用 C# 中的网络摄像头捕获了 JPG 图像并将其存储在文件夹中。

现在我想将其转换为 8 位 PNG 图像。

检查了互联网和堆栈溢出,但没有一个建议的解决方案对我有用。

这是我目前使用的:

Bitmap img = new Bitmap(imgPath);
Bitmap img8 = new Bitmap(imgW, imgH, PixelFormat.Format16bppRgb565);
for (int I = 0; I <= img.Width - 1; I++)
    for (int J = 0; J <= img.Height - 1; J++) 
        img8.SetPixel(I, J, img.GetPixel(I, J));

但是,这会引发以下异常:

索引

像素图像不允许使用"设置像素"。

您可以尝试使用ImageMagick,它包含一个转换文件的实用程序。可以使用命令行界面或 .Net 连接器(如 magick.Net)。

使用命令行,可以启动运行以下命令的进程:

convert [yourfile.jpg] -depth 8 [yourfile.png]

这可能是矫枉过正,但这是我所知道的处理图像的唯一选择。

不,我不能使用 GIF。BUt 可以使用 TIFF。

Image orgBmp = Image.FromFile(@"fname.jpg");
var tiffEncoder = System.Drawing.Imaging.ImageCodecInfo.GetImageEncoders()
                  .First(e => e.FormatDescription == "TIFF");

EncoderParameters parameters = new EncoderParameters(1);
parameters.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.ColorDepth, (long)ColorDepth.Depth8Bit);
orgBmp.Save(@"fname.tif", tiffEncoder, parameters);

你必须自己执行一些编程。 您可以在此处找到示例逻辑和代码 http://codingresolved.com/discussion/2185/save-png-image-as-8bit-format-in-c

最新更新