【问题标题】:convert 32bpp Bitmap to 16bpp (Grayscale) [duplicate]将 32bpp 位图转换为 16bpp(灰度)[重复]
【发布时间】:2023-03-14 09:26:01
【问题描述】:

我正在 C# 中从 Image 对象创建位图。

我得到的位图是 32bpp,我怎样才能把它转换成 16bpp?

Bitmap image_bmp;
System.Drawing.Image tmp = (System.Drawing.Image)img.RenderImage(0); //RenderImage creates an object of tyoe System.Drawing.Image
image_bmp = new Bitmap(tmp);

【问题讨论】:

  • 16bpp ...灰度?颜色?您需要更具体地了解您想要的格式! :)

标签: c# bitmap pixel


【解决方案1】:

如果您在 google 上进行快速搜索,您会发现许多出色的颜色到灰度公式。下面以from wikipedia为例:

Y' =  0.2126 R' + 0.7152 G' + 0.0722 B'

考虑到这一点,.NET 中的一般流程将是:

  • 使用 16bpp 灰度创建正确尺寸的新图像
  • 在原始图像和新图像上使用“LockBits”并循环遍历每个像素
  • 解锁两个图像,然后将新图像保存到文件中

我没有进一步深入这些步骤,而是从堆栈和网络中发现了一些其他问题,这些问题真正深入研究了细节。见:

祝你好运!

注意 - 我假设您使用 GDI+。 Windows 映像组件 (WIC) 的步骤类似,但类和语法完全不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 2013-02-10
    • 2012-03-30
    • 2011-03-23
    相关资源
    最近更新 更多