我在C#中使用网络摄像头拍摄了一张JPG图像,并将其存储在一个文件夹中。
现在我想将其转换为8位PNG图像。
我在互联网和Stack Overflow上进行了检查,但所提出的解决方案都不适用于我。
以下是我目前正在使用的内容:
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));
但是,这会引发以下异常:
索引像素图像不允许使用SetPixel。
答案 0 :(得分:2)
您可以尝试使用ImageMagick,它包含一个转换文件的实用程序。您可以使用命令行界面或magick.Net等.Net连接器。
使用命令行,您可以启动运行以下命令的进程:
convert [yourfile.jpg] -depth 8 [yourfile.png]
这可能是矫枉过正,但这是我知道处理图像的唯一选择。
答案 1 :(得分:1)
不,我不能使用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);
答案 2 :(得分:0)
你必须自己进行一些编程。您可以在http://codingresolved.com/discussion/2185/save-png-image-as-8bit-format-in-c
找到示例逻辑和代码