0

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

4

3 回答 3

2

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

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

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

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

于 2014-02-10T15:54:48.193 回答
2

不,我不能使用 Gif。但是可以使用 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);
于 2014-02-10T18:36:08.633 回答
0

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

于 2014-02-11T19:08:45.480 回答