c# – 将24位bmp转换为16位?

我知道.NET Framework附带了一个图像转换类(System.Drawing. Image.Save方法).

但是我需要将一个24位(R8G8B8)位图图像转换为16位(X1R5G5B5),我真的不知道这种转换,bmp标题中的24比16位变化将不会“ (因为我们需要转换整个图像数据).

我也想知道我是否可以控制图像抖动等

想法?
任何一种帮助将不胜感激.

解决方法

Format16bppRgb1555像素格式被声明,但GDI实际上并不支持它.没有使用该像素格式的主流视频驱动程序或图像编解码器. GDI设计师猜测的东西可能会发生,他们的时间机器不够准确.否则从在System.Drawing上工作的程序员的一个漂亮的复制/粘贴.

Rgb555是可用的硬件和编解码器最接近的匹配项:

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,img.Width,img.Height));
    return bmp;
}

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString("x2"));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable<Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include "WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...