2014-06-20 90 views
0

我使用C#从Image对象创建位图。将32bpp位图转换为16bpp(灰度)

我得到的位图是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); 
+0

16bpp ...灰度?颜色?你需要对你想要的格式做更具体的描述! :) –

+0

16bpp灰度 – Matimont

回答

1

如果你在谷歌上运行一个快速搜索,你可以找到一些灰度公式的优秀颜色。看看下面的from wikipedia为例:

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

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

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

我没有进一步深入这些步骤,而是从堆栈和网络周围发现了一些其他问题,这些问题真的深入细节。请参阅:

祝您好运!

注意 - 我假设你使用GDI +。 Windows Imaging Component(WIC)的步骤类似,但类和语法完全不同。

相关问题