深入理解 System.Drawing.Bitmap 建構子中的「步長」
在建立 System.Drawing.Bitmap 物件時,「步長」參數表示記憶體中一行掃描線起始位置與下一行掃描線起始位置之間的距離。它必須滿足一個特殊的條件:必須是 4 的倍數。這個要求源自於舊的 CPU 設計,它們偏向於 32 位元資料訪問,需要掃描線從 32 位元位址邊界(即 4 的倍數)開始。如果不遵守此對齊方式,則在資料檢索期間會產生效能損失。
雖然現代 CPU 對位址對齊較不敏感,但為了向後相容性,步長仍保持為 4 的倍數。為了解決影像寬度可能與此要求不完全對齊的情況,您可以使用以下公式來確定適當的步長:
<code class="language-c#">int bitsPerPixel = ((int)format & 0xff00) >> 8; int bytesPerPixel = (bitsPerPixel + 7) / 8; int stride = 4 * ((width * bytesPerPixel + 3) / 4);</code>
透過應用此公式,您可以確保步長是 4 的倍數,同時有效地利用記憶體。
以上是System.Drawing.Bitmap 中的 Stride 參數是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!