微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Imagemagick:如何获取图像宽度,然后使用它来将文件夹中的所有图像批量调整为宽度 x 宽度 / 2?

如何解决Imagemagick:如何获取图像宽度,然后使用它来将文件夹中的所有图像批量调整为宽度 x 宽度 / 2?

我有超过 400 张图片需要调整大小。它们需要是它们各自的原始宽度,但高度需要正好是每个图像宽度的一半。

我已经尝试了 3 个小时在 Imagemagick 中获得一些工作,但没有运气。

有什么想法吗? 非常感谢!

magick 40inch_downbelow_001.jpg -ping -resize "x%w/2" 40inch_downbelow_0aaaaaaa01.jpg - 这是我当前的命令,这只是一个测试。尽管告诉它使用一半的宽度,但这会吐出一个完全相同大小的图像。

解决方法

这里有两种在 Windows 中完成此操作的方法,一种使用 ImageMagick v6,另一种使用 v7。这些将运行目录中的所有 JPG 图像。

使用 IMv6...

for %I in ( *.jpg ) do (
   convert "%I" -set filename:0 "%[t]XXX.%[e]" ^
   +distort SRT "0,0 1,%[fx:w/h/2] 0" -shave 1 "%[filename:0]"
)

使用 IMv7...

for %I in ( *.jpg ) do (
   magick "%I" -set filename:0 "%[t]XXX.%[e]" -resize "x%[fx:w/2]!" "%[filename:0]"
)

将您的文件名修饰符替换为我在示例中使用的“XXX”。要在 BAT 脚本中使用这些命令,您需要将百分号“%%”加倍。

,

我想你想要这个,对于单个图像:

magick input.png -resize "x%[fx:int(w/2)]\!" result.png

x 之前没有任何内容的事实意味着宽度保持不变。新高度计算为宽度的一半,感叹号允许扭曲原始纵横比。

如果要对当前目录下的所有PNG进行处理,请使用:

#!/bin/bash

for f in *.png; do
   magick "$f" -resize "x${h}\!" "$f"
done

如果您只有旧的 v6 ImageMagick,请使用:

#!/bin/bash

for f in *.png; do
   # Get current width and halve it
   w=$(identify -format "%w" "$f")
   ((h=w/2))
   mogrify -resize x${h}\! "$f"
done

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。