web-dev-qa-db-ja.com

ImageMagick:背景なしでmogrifyを使用して比例的にサイズを変更する方法

私はこの例に従っていました http://cubiq.org/create-fixed-size-thumbnails-with-imagemagick そしてそれは私がイメージでやりたいことですが、背景の残り(つまり、白い境界線)。これを行う方法はありますか?おそらく白い背景を切り抜く方法はありますか?これを行う別の方法はありますか?サイズ変更は比例する必要があるため、幅のサイズ変更の制限や高さの制限を設定するだけでなく、画像のサイズを比例的に変更します。

18
cj5

リンク先の例では、次のコマンドを使用しています。

mogrify             \
  -resize 80x80     \
  -background white \
  -gravity center   \
  -extent 80x80     \
  -format jpg       \
  -quality 75       \
  -path thumbs      \
   *.jpg

まず、mogrifyは少し危険です。オリジナルをインラインで操作し、オリジナルを上書きします。何かがうまくいかない場合、あなたはあなたのオリジナルを失い、間違った結果で立ち往生しています。ただし、あなたの場合、-path thumbsはこの危険を軽減します。これは、結果がサブディレクトリthumbsに書き込まれるようにするためです。

別のImageMagickコマンドconvertは、オリジナルを保持し、mogrifyと同じ操作を行うことができます。

convert             \
   input.jpg        \
  -resize 80x80     \
  -background white \
  -gravity center   \
  -extent 80x80     \
  -quality 75       \
   thumbs/output.jpg

同じ結果ですが、白いキャンバスの拡張機能だけではありません(元々は結果を正方形の80x80画像にするために追加されました)が必要な場合は、-extent 80x80パラメーター(-background whiteおよびgravity centerも不要です):

convert             \
   input.jpg        \
  -resize 80x80     \
  -quality 75       \
   thumbs/output.jpg

または

mogrify             \
  -resize 80x80     \
  -format jpg       \
  -quality 75       \
  -path thumbs      \
   *.jpg
28
Kurt Pfeifle

これは、すべてを1920xにバッチサイズ変更し、アスペクト比を維持するたびに使用するコマンドです。

mogrify-path。 -サイズ変更1920x1920-format "_resized.jpg" -quality 70 * .jpg

6
Layke

これが古いスレッドであることはわかっていますが、-writeフラグと-setフラグを使用することで、元のファイルを上書きせずに同じディレクトリ内のファイルに書き込むことができます。

mogrify -resize 80x80 \
-set filename:name "%t_small.%e" \
-write "%[filename:name]" \
*.jpg

http://imagemagick.org/script/escape.php に記載されているように、%tは拡張子のないファイル名で、%eは拡張子です。したがって、image.jpgの出力はサムネイルimage_small.jpgになります。

6
Nielsvh