【问题标题】:Save JPEG in Grayscale color mode以灰度颜色模式保存 JPEG
【发布时间】:2013-05-02 00:38:17
【问题描述】:

我正在尝试将 JPEG 保存为灰度图像。

我发现下面的代码将通过混合通道使其变为灰度,但它仍然具有所有三个 RGB 通道。我只需要一个 8 位通道。

    public static Bitmap MakeGrayscale(Bitmap original)
    {
        //create a blank bitmap the same size as original
        Bitmap newBitmap = new Bitmap(original.Width, original.Height);

        //get a graphics object from the new image
        Graphics g = Graphics.FromImage(newBitmap);

        //create the grayscale ColorMatrix
        ColorMatrix colorMatrix = new ColorMatrix(
           new float[][] 
          {
             new float[] {.3f, .3f, .3f, 0, 0},
             new float[] {.59f, .59f, .59f, 0, 0},
             new float[] {.11f, .11f, .11f, 0, 0},
             new float[] {0, 0, 0, 1, 0},
             new float[] {0, 0, 0, 0, 1}
          });

        //create some image attributes
        ImageAttributes attributes = new ImageAttributes();

        //set the color matrix attribute
        attributes.SetColorMatrix(colorMatrix);

        //draw the original image on the new image
        //using the grayscale color matrix
        g.DrawImage(original, new Rectangle(0, 0, original.Width, original.Height),
           0, 0, original.Width, original.Height, GraphicsUnit.Pixel, attributes);

        //dispose the Graphics object
        g.Dispose();
        return newBitmap;
    }

在C#中有什么方法可以实际设置JPEG的颜色模式吗?

我尝试了以下方法,但它仍然输出 24 位 RGB 图像。

            ImageCodecInfo codec = GetEncoderInfo("image/jpeg");
            System.Drawing.Imaging.Encoder enc = System.Drawing.Imaging.Encoder.ColorDepth;
            EncoderParameters encParams = new EncoderParameters(1);
            encParams.Param[0] = new EncoderParameter(enc, 8L);

            source_bitmap.Save(outputFile, codec, encParams);

【问题讨论】:

标签: c# image-processing


【解决方案1】:

有不同的灰度可以编译为图像中三个通道的线性组合。

最常用的是“亮度”,但它会根据您的图像而有所不同。 See this

转换为亮度灰度拍摄

greyscale = 0.21 * R + 0.71 * G + 0.07 * B

其中 R、G 和 B 分别是您的红色、绿色和蓝色通道,并且假设它们的比例为 0 到 1。如果它们的比例为 255,则除以 255

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-10-26
    • 2014-01-08
    • 2023-03-27
    • 2016-09-06
    • 2011-08-26
    相关资源
    最近更新 更多