1600 * 900の画像のリストをモザイクとして連結しようとしていますが、(たとえば)100kあたり100kのビットマップを割り当てることができません。
そのため、ビットマップファイルを作成し、ストリームのような方法で書き込む方法を探しています。
どのようにできるのか?ありがとうございました。
1600 * 900の画像のリストをモザイクとして連結しようとしていますが、(たとえば)100kあたり100kのビットマップを割り当てることができません。
そのため、ビットマップファイルを作成し、ストリームのような方法で書き込む方法を探しています。
どのようにできるのか?ありがとうございました。
100k x 100k の画像の実際の正確な値はまだわかっていませんが、解決策は次のようになります。
結果の W 行 H 列のモザイクでソース イメージのオフセットのリストを作成します。ここでの計算: 100k x 100k の画像は、約 50 x 100 の画像を保持できます (5k のみ、妥当な数です)。したがって、オフセット配列に必要な要素は 5000 個までで、大きくはありません。この回答 (http://stackoverflow.com/questions/8762569/how-is-2d-bin-packing-achieved-programmatically/10339522) を使用して、これらのオフセットを計算します。
イメージ ヘッダーをファイル ストリームに書き込みます (たとえば、.BMP 形式の 54 バイトのヘッダーを参照してください)。
「非効率的な」部分: (100k-by-100k)*BytesPerPixel ゼロをファイルに書き込み、イメージをこのファイルに 1 つずつ書き込むことを繰り返します。
InsertImageToStream() は行ごとに行われますが、かなり簡単だと思います。
ステップ 3 の最適化: offsets[] 配列が Y でソートされ、次に X でソートされると、過剰な FileStream.seek() 呼び出しなしで、結果のイメージの各スキャンラインを最適に埋めることができます。