20

我正在关注这个例子http://cubiq.org/create-fixed-size-thumbnails-with-imagemagick,这正是我想要对图像做的,除了有背景剩菜(即白色边框)。有没有办法做到这一点,并可能裁剪出白色背景?还有另一种方法可以做到这一点吗?调整大小需要成比例,所以我不想设置宽度调整大小限制或高度限制,而是按比例调整图像大小。

4

3 回答 3

32

您链接到的示例使用此命令:

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 whiteandgravity center也是多余的):

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

或者

mogrify             \
  -resize 80x80     \
  -format jpg       \
  -quality 75       \
  -path thumbs      \
   *.jpg
于 2012-09-15T09:29:58.727 回答
6

我知道这是一个旧线程,但是通过使用 -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。

于 2014-05-21T21:44:02.287 回答
6

这是我每次想将所有内容批量调整为 1920x 并保持纵横比时使用的命令。

mogrify - 路径。-resize 1920x1920 -format "_resized.jpg" -quality 70 *.jpg

于 2015-01-13T10:45:45.247 回答