代码之家  ›  专栏  ›  技术社区  ›  Robin Rodricks

C#-如何将图像转换为8位彩色图像?

  •  1
  • Robin Rodricks  · 技术社区  · 15 年前

    我正在逐像素复制到一个用16位颜色创建的新图像中- Format16bppRgb565 ,但我需要 Format8bpp Format8bppIndexed 因为其他设备无法处理索引位图)

     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));
         }
     }
    

    那么,如何将图像转换为每像素字节8位的数组呢?

    • 我可以使用8位索引格式并提取字节吗- 格式索引
    • “最简单的方法是创建一个新的8位位图,并在其上绘制24位图像。”-如何?
    2 回复  |  直到 15 年前
        1
  •  0
  •   Dror Helper    15 年前

    虽然我不知道如何搭配纯香草C,但你可以用 FreeImage Project 用于转换图像格式的库:

    项目的开发者谁愿意 当今多媒体所需的其他 使用,快速,多线程安全, Windows和跨平台(工程)

    它是用C++编写的,但是你可以使用好的.NET包装器。

        2
  •  0
  •   Patrik    13 年前

    如果你想转换成灰度,你可以找到两种解决方案。

    平均RGB通道您可以为每个单通道取8位值,并计算像素=(R+G+B)/3

    只取绿色部分。最好看一看。

    如果要转换为8位颜色表示,则需要使用颜色表。 http://www.codeproject.com/KB/graphics/Image_Bitdepth_Conversion.aspx

    推荐文章