2014-06-20 142 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)的步驟類似,但類和語法完全不同。

相關問題