Delphi 7ではかなり大きな24bppビットマップ(数百MB)を処理する必要があります。 Graphic32ライブラリを使用して処理したいので、32bpp(TBitmap32)に変換する必要があります。 TBitmap32のLoadFromFileメソッドは、元の24bppビットマップをロードする一時的な従来のTBitmapを作成し、必要なフォーマット変換を行うためにTBitmap32に割り当てられます。もちろん、これらの巨大なビットマップのうちの2つをメモリに格納することで、メモリの負荷は約2倍になります。これはアプリケーションにとって致命的なことになります。24bppビットマップから32bppへの変換
私が考えているのは、32bppのビットマップが収まるような大きさの事前割り当てバッファに24bppビットマップをロードする方法です。バッファの終わりから、RGBバイトをオフセットは32bppに必要です。
これは可能ですか?あらかじめ割り当てられたバッファにビットマップをロードするにはどうすればよいですか?何か案が?
これがなぜあなたのアプリケーションにとって致命的なのかを明確にすることはできますか?少しのメモリページングで少しのパフォーマンス低下が見られるかもしれませんが、なぜそれは致命的ですか? – jpfollenius
@Ken:彼はコピーを避けたい。大きなバッファを1回だけ割り当て、バッファに(より小さい)24bppビットマップを読み込み、すべての変換をその場で実行します。 – jpfollenius