ImageMagick:如何在没有背景的情况下与mogrify按比例调整大小

cj5*_*cj5 18 imagemagick mogrify

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

Kur*_*fle 28

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

mogrify             \
  -resize 80x80     \
  -background white \
  -gravity center   \
  -extent 80x80     \
  -format jpg       \
  -quality 75       \
  -path thumbs      \
   *.jpg
Run Code Online (Sandbox Code Playgroud)

首先,mogrify有点危险.它内联操纵您的原件,并覆盖原件.如果出现问题,你就丢失了原件,并且遇到了错误的结果.-path thumbs但是,在您的情况下,可以减轻这种危险,因为确保将结果写入子目录的拇指

另一个ImageMagick命令,convert可以保留您的原件并执行相同的操作mogrify:

convert             \
   input.jpg        \
  -resize 80x80     \
  -background white \
  -gravity center   \
  -extent 80x80     \
  -quality 75       \
   thumbs/output.jpg
Run Code Online (Sandbox Code Playgroud)

如果想要相同的结果,但只是不是白色画布扩展(最初添加以使结果成为方形80x80图像),只需省去-extent 80x80参数(-background white并且gravity center也是多余的):

convert             \
   input.jpg        \
  -resize 80x80     \
  -quality 75       \
   thumbs/output.jpg
Run Code Online (Sandbox Code Playgroud)

要么

mogrify             \
  -resize 80x80     \
  -format jpg       \
  -quality 75       \
  -path thumbs      \
   *.jpg
Run Code Online (Sandbox Code Playgroud)


Nie*_*svh 6

我知道这是一个旧线程,但是通过将-write标志与-set标志一起使用,可以写入同一目录中的文件而不覆盖原始文件:

mogrify -resize 80x80 \
-set filename:name "%t_small.%e" \
-write "%[filename:name]" \
*.jpg
Run Code Online (Sandbox Code Playgroud)

http://imagemagick.org/script/escape.php所述,%t是没有扩展名的文件名,%e是扩展名.因此image.jpg的输出将是缩略图image_small.jpg.


Lay*_*yke 6

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

mogrify -path.-resize 1920x1920 -format"_resized.jpg"-quality 70*.jpg

  • 实际上“-resize 1920x1920”保持宽高比,导致“max(width,height)”等于1920。 (2认同)