16 位元灰階影像轉換技術
本指南介紹如何將影像轉換為 16 位元灰階格式,而無需手動將 RGB 分量調整為亮度值。
建立新的 16 位元灰階點陣圖:
最簡單的方法是將 System.Drawing.Bitmap
建構子與 System.Drawing.Imaging.PixelFormat
參數一起使用。 這會直接建立一個具有所需 16 位元灰階格式的新位圖:
<code class="language-csharp">Bitmap grayScaleBP = new System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);</code>
此程式碼片段產生 16 位元灰階的 2x2 像素位圖。 根據需要調整影像的尺寸。
將現有影像轉換為 16 位元灰階:
要轉換現有位圖,您需要迭代每個像素並重新定義其顏色屬性。雖然可能,但此方法對於較大的影像效率較低。
<code class="language-csharp">// (Pixel iteration code would go here – omitted for brevity due to inefficiency)</code>
使用 ColorMatrix 最佳化灰階轉換:
要實現更快、更有效率的灰階轉換,請利用 ColorMatrix
。這種方法將變換矩陣應用於影像的色彩數據,從而實現灰階轉換。
<code class="language-csharp">ColorMatrix colorMatrix = new ColorMatrix( new float[][] { new float[] {.3f, .3f, .3f, 0, 0}, new float[] {.59f, .59f, .59f, 0, 0}, new float[] {.11f, .11f, .11f, 0, 0}, new float[] {0, 0, 0, 1, 0}, new float[] {0, 0, 0, 0, 1} }); using (ImageAttributes attributes = new ImageAttributes()) { attributes.SetColorMatrix(colorMatrix); // ... (Drawing code using attributes to apply the ColorMatrix) ... }</code>
這利用標準亮度權重(.3、.59、.11)來實現感知上準確的灰階轉換。 請記住將註解部分替換為適當的程式碼,以使用修改後的 ImageAttributes
繪製圖像。 這種方法比逐像素操作要高效得多,特別是對於較大的影像。
以上是如何將影像轉換為 16 位元灰階?的詳細內容。更多資訊請關注PHP中文網其他相關文章!