Convert 24-bit bmp to 16-bit?

后端 未结 3 1703
花落未央
花落未央 2020-12-07 00:47

I know that the .NET Framework comes with an image conversion class (the System.Drawing.Image.Save method).

But I need to convert a 24-bit (R8G8B8) bitmap image to a

3条回答
  •  独厮守ぢ
    2020-12-07 01:46

    The Format16bppRgb1555 pixel format is declared but GDI+ doesn't actually support it. There is no main-stream video driver or image codec that ever used that pixel format. Something that the GDI+ designers guessed could have happened, their time machine wasn't accurate enough. Otherwise a pretty sloppy copy/paste from the programmer that worked on System.Drawing.

    Rgb555 is the closest match for available hardware and codecs:

    public static Bitmap ConvertTo16bpp(Image img) {
        var bmp = new Bitmap(img.Width, img.Height,
                      System.Drawing.Imaging.PixelFormat.Format16bppRgb555);
        using (var gr = Graphics.FromImage(bmp))
            gr.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height));
        return bmp;
    }
    

提交回复
热议问题