私は現在、ac#オープンソースの写真モザイクソフトウェア(Sourceforge Link)に取り組んでいます。このソフトウェアは、大量の小さな写真(タイル)を1つの大きな画像につなぎ合わせます。
最終的な画像サイズは通常20kピクセル×15kピクセルのオーダーであるため、タイルをメモリに配置する方法のマップのみを保存しています。最終的な画像を作成するために、私はそれを部分的に、つまり8行のバンドで作成しています(他の数でも可能です)。
bmpの場合、最初にbmpヘッダーを書き込み、次にARGBデータをこのファイルに追加することで、このデータをチャンクごとに簡単に保存できます。
しかし、結果として得られるbmpは、それ以上処理するには大きすぎます(たとえば、ポスター印刷会社に渡すなど)。したがって、これらの大きな画像をjpgとしてhddに保存したいと思います。
問題は、jpgが圧縮されているため、データをチャンクで書き込むのは非常に難しいように見えることです(通常のBitmap.Save()関数は最初に画像全体をメモリにロードするため、適用できません)。純粋な非圧縮のRGBデータを書き込むためです。それをしません。
私の知る限り、jpgの圧縮アルゴリズムはチャンクまたは8x8ピクセルで機能するため、パーティでjpgを書き込む基本的な機能が存在する必要があります。
この問題の解決策を見つけるために、いくつかの画像ライブラリ(FreeImage、GraphicsMagick、LibTiff.NET)を調べましたが、見つかりませんでした。LibTiffには基本的に必要な機能がありますが、tiff画像形式の場合のみです。
あなたの助けをどうもありがとう!マックス