ユーザーが視覚的に複雑なイメージを作成できる PHP システムを構築していますが、最終的な要件は50kB 以下です。
ユーザーは、37 のテンプレート イメージの 1 つにテキストを印刷することを選択できるため、結果は 1 つのフラット イメージになります。
テキストは、任意の色と多数のフォントのいずれかにすることができます。これは、最終的な画像が非常に視覚的に複雑で予測不可能になる可能性があることを意味します (画像の寸法を除く)。
次に、最終的な画像ファイルのサイズが 50kB を超えないようにする必要があります (これは外部要件であり、変更できません)。
最後の要件 (これも外部) は、画像形式が.jpeg、.png、または .gif でなければならないことです。
私はGraphicsMagickのドキュメントを調べましたが、ファイルサイズを設定して圧縮を自動的に計算できることについて言及している場所が見つかりません。
これを圧縮->保存->テスト ループを介してプログラムで実行することを検討しましたが、事前に圧縮に基づいてファイルサイズを計算できるとは限らないため、これはかなりのプロセッサ集約型になると想像できます。これが、GraphicsMagick で問題が既に解決されているかどうかを確認するように求めている理由です。
編集
外部要件がある理由を明確にするために:
ユーザーはこのシステムを利用してフラット イメージを作成し、それを PC に保存します。この画像は、リターゲティング キャンペーンで使用するためにAdrollにアップロードされます。
画像に対するAdroll の要件は次のとおりです。私のシステムでは、728x90、300x250、および 120x600 の画像サイズしか提供されません。
2010年11月27日編集
これは GraphicsMagick では不可能と思われるため、この機能を提供できる可能性のある圧縮ライブラリ (libpng など) と直接接続するなど、他のソリューションを検討したいと考えています。
最後の手段として、これを達成できるアルゴリズムを調べて、自分で実装することもできます。
類推として、そのように傾倒している人のために:
私は A* が検索するものを求めています。明確な開始点と終了点があり、最短時間で可能な限り最適なルートを見つけます。
私が避けたいと思っていたのは、Breadth/Depth First が検索するものでした: 明確な開始点/終了点ですが、局所的な最小値を見つけると最適解にヒットしない可能性があり、計算上完全に吹き飛ばされる可能性があります。