.NET では、通常、Bitmap クラスを使用して画像を保存します。すばやくアクセスするには、lock() と unlock()を呼び出して、ビットマップの内容をメモリにコピーする必要があります。では、ロックする前にビットマップがパックされたメモリ配列に格納されていなかったということですか?
ロックの必要性は正確には何ですか?つまり、プラットフォームが単純にビットマップの最初のピクセルへのポインターを返すことができず、ピクセルに直接アクセスできないのはなぜですか? (「安全でない」メモリアクセスの考慮事項は別として)
考えられる理由:
- ビットマップは、メモリを節約するために元の圧縮形式 (PNG、JPEG など) で保存されます。
- ビットマップは 24 bpp 形式で保存されるため、32 bpp イメージよりもアクセスが遅くなります
- ビットマップはパックされたメモリ配列に格納されておらず、断片化されているため、高速に読み書きできません
- ビットマップは非公開の方法で保存されており、プラットフォームは実際のビットマップ データ メモリにアクセスすることを望んでおらず、lock() を使用してメモリ内にコピーを作成する必要があります。