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

Posted

技术标签:

【中文标题】ImageMagick:如何在没有背景的情况下使用 mogrify 按比例调整大小【英文标题】:ImageMagick: How to resize proportionally with mogrify without a background 【发布时间】:2012-09-14 23:40:06 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

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

【讨论】:

谢谢,Kurt,我会解决 mogrify 问题。我不太确定它和转换之间有什么区别,但我确实设置了 -path 以防万一。我当然不想覆盖主图像文件。【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

其实-resize 1920x1920保持纵横比,导致max(width,height)等于1920。

以上是关于ImageMagick:如何在没有背景的情况下使用 mogrify 按比例调整大小的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在不使用 ImageMagick 或其他第三方软件的情况下在 R 中制作 GIF?

imagemagick 在不使用 -extent 的情况下将画布更改为正方形(保留最长边)

ImageMagick消除背景噪音

使用 Imagemagick 从图像中自动裁剪文本(签名)并更改背景颜色

ImageMagick消除背景噪音并将其留白

使用 ImageMagick 自动调整大小覆盖两个图像