如何批量调整文件夹(包括子文件夹)中所有图像的大小?


11

我的服务器上有12GB的巨大图片库,里面充满了各个子文件夹中的图像。这些文件太大,无法完全使用。我需要将所有图像的尺寸调整为820像素(保持比例)。所以我的问题是-如何创建某种爬网脚本,将所有图像的大小调整为大于820px,然后保存回覆原始文件?

希望您能帮助我:-)预先谢谢。


3
find . -name "*.jpg" -exec mogrify -resize 820x {} +会全力以赴 如果您不想处理“小于820像素”的像素,请在此处选择一些选项。
don_crissti 2015年

Answers:


13

ImageMagick工具将进行转换或迁移,即可完成工作。

您可以通过您的包管理器或源/ rpm来获得它们:http : //www.imagemagick.org/script/binary-releases.php#unix

基本用法:

$ mogrify -resize 820x *.jpg

如果您需要递归:

find . -name '*.jpg' -execdir mogrify -resize 820x {} \;

我认为“ 820px宽(保持比例)”不是指“调整为820x820”。它更像是“宽820像素,并且无论什么比例,都很高”;),而且这不能处理递归性。
Erathiel 2015年

1
好点子。编辑!

如果要使其仅在尺寸大于设置的尺寸时仍会调整大小并仍保持比例,则可以将其更改为: find . -name '*.jpg' -execdir mogrify -resize '820x620>' {} \;
OpensaurusRex

2
警告:这将覆盖您现有的图像。
sudo


5

使用convert来完成这项工作。

convert -resize "1024x768>" origIMG destIMG会将origIMG的大小调整为1024x768,并保持宽高比,并且仅当图像大于1024时才调整大小,并将新图像存储在destIMG中。之后,您可以将destIMG移至原始位置。

使用循环遍历所有目录或使用find


您将如何修改此命令以用缩小的图像覆盖原始图像,同时使用递归find
西蒙·伊斯特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.