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 white
和gravity 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 的情况下将画布更改为正方形(保留最长边)