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

标签 c# image

我知道 .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/

相关文章:

iphone - RestKit 0.20使用nsdata发布数组Json

ios - 如何使用 swift 3.1 将图像从 url 加载到字典中作为数据

c# - 数据集在 winforms 应用程序中在内存中保留多长时间

c# - 如何在文本框(WPF)中按 Control+Right 选择 2 个单词?

c# - 如何创建和使用自己的 C++ 函数而不是内置的库

html - 在 div 中居中 href 和图像并删除图像边框

css - 在 CSS 中链接图像的一半

image - 沿轮廓计算同质物体

c# - 从 TaskScheduler 中取消 TPL 任务

c# - 映射 SPA 之外的特定路线 asp.net core