我有一个文件夹,里面有 PNG 和 JPEG 格式的彩色图像。在 Linux 中使用时file
,我可以看到 PNG 图像PNG image data, ... x ..., 8-bit/color RGBA, non-interlaced
的高度和宽度都是不同的。而 JPEG 图像都是JPEG image data, JFIF standard 1.01
。它们的大小最多可达500KB
。
我可以用来find . -type f -size +10k -exec ls -l {} \;
列出所有尺寸大于的图像10Kb
。
我还可以用来convert input.png -geometry x150 output.png
调整一张图片的高度而不150px
改变高度/宽度比。或者mogrify -geometry x150 *
调整文件夹中所有图像的大小。
有人知道如何结合这两个命令吗调整所有尺寸大于10Kb
在文件夹中?
答案1
为什么不执行来自 find 的转换?
find . -type f -size +10k -exec convert {} -geometry x150 {}.png \;
您需要将rename
文件转换为*.pic.png
有用的内容。但它应该可以工作。
答案2
我假设当前目录中只有图片文件。如果没有,你可以指定两个命令,一个带有-name "*.jpg"
,一个带有-name "*.png"
。
尝试使用此命令来查看选择了哪些文件(避免破坏要保留的文件),
find . -type f -name "*" -size +10k -exec echo mogrify -geometry x150 {} \;
如果可以的话,删除echo
使用此命令来缩小太大的文件
find . -type f -name "*" -size +10k -exec mogrify -geometry x150 {} \;
可能10k尺寸不匹配-geometry x150
,所以要根据图片的种类进行修改。
答案3
这将创建一个包含您调整大小后的图像的文件夹,并且不会触及原始文件,并将调整大小后的图像放在那里。
这将保留您的原始图像,如果您对新调整大小的图像感到满意,您可以替换它。
#!/bin/bash
[ ! -d resized ] && mkdir resized
while read image; do
echo "Resizing [$image] to [resized/$image]"
convert $image -geometry x150 "resized/$image"
done < <(find . -type f -size +10k -exec ls {} \;)