16-Bit-Graustufen-Bildkonvertierungstechniken
In dieser Anleitung wird erläutert, wie Sie Bilder in das 16-Bit-Graustufenformat konvertieren, ohne RGB-Komponenten manuell an Luminanzwerte anzupassen.
Erstellen einer neuen 16-Bit-Graustufen-Bitmap:
Die einfachste Methode besteht darin, den System.Drawing.Bitmap
-Konstruktor mit dem System.Drawing.Imaging.PixelFormat
-Parameter zu verwenden. Dadurch wird direkt eine neue Bitmap mit dem gewünschten 16-Bit-Graustufenformat erstellt:
<code class="language-csharp">Bitmap grayScaleBP = new System.Drawing.Bitmap(2, 2, System.Drawing.Imaging.PixelFormat.Format16bppGrayScale);</code>
Dieses Code-Snippet generiert eine 2x2 Pixel große Bitmap in 16-Bit-Graustufen. Passen Sie die Abmessungen nach Bedarf für Ihr Bild an.
Konvertieren eines vorhandenen Bildes in 16-Bit-Graustufen:
Um eine vorhandene Bitmap zu konvertieren, müssen Sie jedes Pixel durchlaufen und seine Farbeigenschaften neu definieren. Diese Methode ist zwar möglich, für größere Bilder jedoch weniger effizient.
<code class="language-csharp">// (Pixel iteration code would go here – omitted for brevity due to inefficiency)</code>
Optimierte Graustufenkonvertierung mit ColorMatrix:
Für eine wesentlich schnellere und effizientere Graustufenkonvertierung nutzen Sie einen ColorMatrix
. Dieser Ansatz wendet eine Transformationsmatrix auf die Farbdaten des Bildes an, was zu einer Graustufenkonvertierung führt.
<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>
Dies nutzt die Standard-Luminanzgewichtung (.3, .59, .11) für eine wahrnehmungsgenaue Graustufenkonvertierung. Denken Sie daran, den kommentierten Abschnitt durch den entsprechenden Code zu ersetzen, um das Bild mit dem geänderten ImageAttributes
zu zeichnen. Diese Methode ist weitaus effizienter als die pixelweise Manipulation, insbesondere bei größeren Bildern.
Das obige ist der detaillierte Inhalt vonWie konvertiere ich ein Bild in 16-Bit-Graustufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!