0

非常に簡単に言えば、私の写真で imagemagick を呼び出すスクリプトがあります。

元の画像は 320 x 444 で、同じ縦横比を維持しながら縮小したバージョンをいくつか作成したい

を使用してimagemagickを呼び出します

convert oldfile.png -resize 290x newfile.png

設定した幅に合わせて拡大縮小したいのですが、高さはそれに応じて拡大縮小されます。

3 つの別々のコマンドで 80x、160x、290x を実行します。

最小の 2 は元の縦横比が同じ画像を生成しますが、290x はそうではありません。

生成される画像のサイズは、290 x 402

その 1 つが縦横比を維持できず、他の 2 つのサイズがそれを維持する理由がわかりません。

何か案は?

4

1 に答える 1

1

3 番目のコマンドの問題は、要求されたサイズ自体にあると思います。

  1. 最初のコマンドでは、両方の次元が 4 で除算されます320/4=80444/4=111
  2. 2 番目のコマンドでは、両方の次元が 2 で除算されます320/2=160444/2=222

444 と 320 には、2 と 4 の 2 つの公約数しかありません。最初の 2 つのコマンドでこれらの約数を既に使用しているため、他の (幅、高さ) の組み合わせでは、わずかに異なる縦横比が得られます。まったく同じものを取得することは不可能です。アスペクト比固定290。

実際、元の画像のアスペクト比は1.3875ですが、290x403 画像では のアスペクト比が得1,389655172られ、290x402 画像では1,386206897比率が得られます。 .

ただし、Imagemagick のドキュメントで読むことができるように、一般に、Imagemagick は常に画像の縦横比を維持しようとします。

resize 演算子の引数は、画像が収まる領域です。この領域は画像の最終的なサイズではなく、画像の最大サイズです。これは、IM が ('!' フラグが指定されていない限り) 画像の縦横比を最終的なものよりも維持しようとするためですが、最終的な寸法の少なくとも 1 つ (両方ではない場合) が、指定された画像の引数と一致する必要があります。はっきりさせておきます...サイズ変更により、要求されたサイズに画像が収まります。要求されたボックス サイズを満たしていません。

さらに参照するには、ここを参照してください

于 2013-06-22T13:20:57.833 に答える