我使用 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