13

たとえば、1600x1200 の大きな画像があるが、250x200 (高さと幅の比率が異なる) のサムネイルを生成したい場合、これをサイズに縮小してから中央をトリミングするにはどうすればよいですか? これは convert を使用して 1 行で可能ですか?

4

2 に答える 2

25

縮小 +指定された領域を埋める(必要に応じて出力画像を引き伸ばす)

250x200 ピクセルに縮小して (縦横比を維持せずに) 250x200 のスペースを完全に埋めたい場合 (必要に応じて画像を引き伸ばしたり歪めたり)、次を使用します。

  convert            \
     input.jpeg      \
    -scale 250x200\! \
     output1.png

\!(スケール ジオメトリ設定の後の文字に注意してください!)とのサフィックスを、必要な形式のサフィックスに
置き換えます。ImageMagick が自動的に処理します。.jpeg.png


縮小 +結果を所定の領域に合わせる(アスペクト比を維持し、必要に応じて、所定の領域の一部を放棄する)

元の画像の縦横比 (高さと幅の比率) を維持しながら 250x200 ピクセルに縮小し、使用されていない 250x200 ピクセルの寸法をトリミングする場合は、次のように使用します。

  convert          \
     input.jpeg    \
    -scale 250x200 \
     output2.png

デフォルトでは、-resize引数で指定された幅と高さは最大値です (パーセンテージで指定しない限り)。つまり、出力画像は、画像の縦横比を維持しながら、指定された寸法に合わせて拡大または縮小されます。

上記のこのコマンドは、寸法を 250x200 に設定しようとします。

  • 高さを元の 1200 ピクセルから 200 ピクセル (元の値の 16.6666%) に縮小すると、幅は 266.66 ピクセルになります。だからまだ間に合わない……。

  • 幅が元の 1600 ピクセルから 250 ピクセル (元の値の 15.625%) に縮小すると、高さは 187.5 ピクセルになります。これで収まり、上下に若干のスペースを残すことができます。

したがって、最終的なサイズは 250x187 または 250x188 ピクセルのいずれかになります (高さにピクセルの端数を含めることはできません。整数が必要です!)。


縮小 +所定の領域の中央結果(および背景色を使用して残りのスペースを埋める)

250x200 ピクセル内に縮小し、元の縦横比を維持し、黄色の背景を追加してそのスペースの実際の画像を中央に配置するフルサイズの 250x200 ピクセルの画像を作成する場合は、次を使用します。

  convert              \
     input.jpeg        \
    -scale 250x200     \
    -gravity center    \
    -background yellow \
    -extent 250x200    \
     output3.png

背景色を他の好きな色に置き換えるか、none透明な背景に置き換えます (JPEG 出力ではサポートされていません!)。


縦横比 + を維持したまま縮小し、指定された領域をトリミングせずに縮小します

縦横比を維持したまま 250x200 ピクセルにスケーリングし、250x200 のスペースを完全に埋めたい場合 (オーバーフローを切り捨てない)、次を使用します。

  convert             \
     input.jpeg       \
    -scale '250x200^' \
     output4.png

^(スケール ジオメトリ設定の後の文字に注意してください。この^機能には、最小バージョンの ImageMagick 6.3.8-2 が必要です。)または引数に追加して
幅と高さを変更する場合、これらの設定は最小値と見なされます。これらの寸法も実際に達成されます。つまり、画像の縦横比を維持しながら、幅または高さのいずれかが指定された寸法に一致するまで、出力画像が拡大または縮小されます。^-scale-resize

上記のこのコマンドは、寸法を 250x200 に設定しようとします。

  • 高さが元の 1200 ピクセルから 200 ピクセル (この元の値の 16.6666%) に縮小されると、必要なスケーリングが達成されます。幅は 266.66 ピクセルになりました。これは 267 ピクセルに丸められます。

  • したがって、最終的なサイズは 267x200 ピクセルになります。


縦横比を維持しながら縮小し、指定された領域にトリミングします

縦横比を維持したまま 250x200 ピクセルにスケーリングし、250x200 のスペースを完全に埋める (左右の端からストリップを切り取る) 場合は、次を使用します。

  convert             \
     input.jpeg       \
    -scale '250x200^' \
    -gravity center   \
    -extent 250x250   \
     output5.png

画像の最終的なサイズは 250x200 になります。前のコマンド (250x267 の結果が得られた) と比較すると、左端と右端からいくつかのピクセル列が削除されています。

于 2012-08-31T23:21:34.777 に答える
3

受け入れられた回答は、質問が尋ねることをしません。

正確な出力サイズ (250x200 など) が必要な場合は、縦横比を維持するために元の画像から最大限の情報を取得し、余分な部分をトリミングするには、次のコマンドを使用します。

convert input.jpg -scale "250x200^" -gravity center -crop 250x200+0+0 output.jpg

于 2015-12-26T12:14:29.650 に答える