我知道 .NET Framework 自带图像转换类(System.Drawing.Image.Save 方法)。
但我需要将 24 位 (R8G8B8) 位图图像转换为 16 位 (X1R5G5B5),我真的不知道这种转换,以及 bmp 中 24 位到 16 位的变化 header 不起作用(因为我们需要转换整个图像数据)。
另外我想知道是否可以控制图像抖动等
想法? 任何形式的帮助将不胜感激。
最佳答案
声明了 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, 0, img.Width, img.Height));
return bmp;
}
关于c# - 将 24 位 bmp 转换为 16 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2378690/