これが問題です。通常のjpgファイルとして512x512ピクセルのJPEGタイルの大規模なセットがあります。
私は多くのことを行い、最後にそれらすべてのファイルを 1 つの巨大な JPEG にステッチする必要があるソフトウェアを作成しました。
まず第一に、これを行うために ImageMagick を使用したくありませんが、ソフトウェア内で実行します。
Delphi では、JPG ファイルを別の JPG キャンバスにコピーすることはできないため、最初に TBitmap を作成する必要があります。次に、タイルを TBitmap キャンバスにコピーし、次に TBitmap を jpeg 画像に変換してファイルに保存します。
この問題は、結果のファイル サイズが大きすぎる場合に発生します (20 000 x 20 000 ピクセルなど)。TBitmap.SetSize を呼び出すと、自然にエラーが発生します (メモリ不足など)。
まったく同じマシンで Photoshop を使用していくつかのテストを行い、複雑な (空白ではない) 30 000 x 30 000 ファイルを作成して JPEG に保存することができました。
問題は、どうすれば同じことを実行できるかということです。結果をディスクに直接書き込むか、他のトリックを使用して、これらすべての JPEG をステッチする方法を見つけますか?...
20k x 20k ピクセルは十分に大きいように見えますが、この値は私のマシン (4 GB RAM) にのみ適用されるため、RAM の量が少ないとソフトウェアがさらに制限されます。
ありがとう
編集:明確にするために:
私が望むのは、これらの小さな JPG 画像をつなぎ合わせて、大きな画像を RAM に保持せずに大きな画像を書き込む方法を見つけることです。どうやらビットマップ ストリームの読み取り/書き込みはディスク上で直接可能ですが (確かではありません)、非常に大きなファイルになります。したがって、JPG 形式でこれができない場合は、TIFF や PNG などの他の圧縮形式で行うことができます。また、(すでに圧縮された) 初期の JPG 品質を失わないように、過度の再圧縮を避けたいと考えています。
したがって、完璧な解決策は、小さなファイルを直接読み取り、何らかの形で大きなファイルに書き込む方法です。タイルのサイズは 256x256 または 512x512 で、JPEG 圧縮の調整に役立ちます。