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

时间:2014-02-10 15:38:49

标签: c# asp.net image-conversion 8-bit

我在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。

3 个答案:

答案 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

找到示例逻辑和代码