System.Drawing.Bitmaps Schrittparameter: Ein tiefer Einblick
Der stride
-Parameter im System.Drawing.Bitmap
-Konstruktor sorgt oft für Verwirrung. In diesem Artikel wird erklärt, warum es ein Vielfaches von 4 sein muss.
Diese Anforderung ergibt sich aus älteren CPU-Architekturen. Für eine optimale Leistung verarbeiteten diese CPUs Bitmap-Daten in 32-Bit-Blöcken. Entscheidend war die Ausrichtung des ersten Bytes jeder Scanzeile an einer 32-Bit-Grenze (ein Vielfaches von 4). Jede Fehlausrichtung erforderte zusätzliche CPU-Zyklen für die Datenreorganisation.
Obwohl moderne CPUs die Cache-Zeilenausrichtung bevorzugen, bleibt die Einschränkung des Vielfachen von 4 stride
aus Gründen der Abwärtskompatibilität bestehen.
Schrittberechnung
Das richtige stride
wird wie folgt berechnet:
<code class="language-csharp">int bitsPerPixel = ((int)format & 0xff00) >> 8; int bytesPerPixel = (bitsPerPixel + 7) / 8; int stride = 4 * ((width * bytesPerPixel + 3) / 4);</code>
Ersetzen Sie format
und width
des Bildes, um das entsprechende stride
zu erhalten.
Zusammenfassung
Das Verständnis des historischen Kontexts der stride
-Einschränkung ist der Schlüssel zur effizienten Verwendung des System.Drawing.Bitmap
-Konstruktors. Ein Vielfaches von 4 stride
gewährleistet Kompatibilität und Leistungsoptimierung über verschiedene Architekturen hinweg.
Das obige ist der detaillierte Inhalt vonWarum muss der Stride-Parameter in System.Drawing.Bitmap ein Vielfaches von 4 sein?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!