1

すべての画像をより大きな画像にするのに苦労しています。スケーリングは外部で適用されます (画像に中継されず、複数のもののいずれかである可能性があります)。これらは私が現時点で取っているステップです:

  1. 大きな画像のサイズを計算します(たとえば、1000x1000)

  2. 配列内の各画像について、縦横比を計算します。(それらはすべて異なります)

  3. 必要な倍率を見つけます (画像全体の 6% など)。

  4. 画像の合計サイズ/縦横比の平方根をとって、1 つの次元を見つけます。

  5. 私たちが知っている側に縦横比を掛けて、他の次元を取得します。

  6. 画像を新しく計算された値に縮小します

  7. 今、私が問題を抱えている場所です)拡大縮小された画像に収まる大きな画像上のスペースを見つけます。複数ある場合は、ランダムに1つを選択してください。

  8. 画像がいっぱいになるまで繰り返します。収まる必要がある約 4000 枚の画像があります。

塗りつぶしに便利な非常に小さな画像 (1x1、2x1、2x2 など) がたくさんあります。問題は、ランダムな方法と最初のスペースの方法がうまくいかず、通常、いくつかの画像が収まらないことです。

関連するすべての寸法を知っている画像を配置するのに最適な場所を選択できるアルゴリズムはありますか? 回転は問題ありません (したがって、100x50 は 50X100 として扱うことができます)

現在Javaを使用していますが、問題はどの言語にも当てはまります。

4

1 に答える 1

1

あなたが見ているアルゴリズムは、整数計画法と呼ばれる分野に分類されます。これは、すべての入力が (実数ではなく) 整数である最適化問題の解のクラスです。あなたが尋ねている特定の問題は、ビンパッキングという名前で呼ばれています。このページには、この問題に関するコード例があります。

于 2012-11-09T19:43:05.863 に答える