System.Drawing.Bitmap の Stride パラメーター: 詳細
stride
コンストラクターの System.Drawing.Bitmap
パラメーターは、しばしば混乱を引き起こします。 この記事では、なぜ 4 の倍数でなければならないのかについて説明します。
この要件は、古い CPU アーキテクチャに由来しています。 最適なパフォーマンスを実現するために、これらの CPU はビットマップ データを 32 ビットのチャンクで処理しました。 各走査線の最初のバイトを 32 ビット境界 (4 の倍数) に合わせることが重要でした。 何らかの不整合があると、データの再編成のために追加の CPU サイクルが必要になりました。
最新の CPU はキャッシュ ラインのアライメントを優先しますが、下位互換性のために 4 の倍数 stride
制約が残されています。
ストライド計算
正しい stride
は次のように計算されます:
int bitsPerPixel = ((int)format & 0xff00) >> 8; int bytesPerPixel = (bitsPerPixel + 7) / 8; int stride = 4 * ((width * bytesPerPixel + 3) / 4);
画像の format
と width
を置き換えて、適切な stride
を取得します。
要約
stride
制限の歴史的背景を理解することが、System.Drawing.Bitmap
コンストラクターを効率的に使用するための鍵となります。 4 の倍数 stride
により、さまざまなアーキテクチャ間での互換性とパフォーマンスの最適化が保証されます。
以上がSystem.Drawing.Bitmap の Stride パラメータが 4 の倍数でなければならないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。