Heim > Backend-Entwicklung > C++ > Wie konvertiere ich ein Bild in 16-Bit-Graustufen?

Wie konvertiere ich ein Bild in 16-Bit-Graustufen?

Barbara Streisand
Freigeben: 2025-01-17 12:52:10
Original
306 Leute haben es durchsucht

How to Convert an Image to 16-Bit Grayscale?

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage