如何在ImageMagick中批量调整图像大小并保持宽高比和最大宽度和高度?

4
我有一个高分辨率图片文件夹,其中包含JPG和24位透明PNG格式的混合图片。我想要批量生成缩略图,并遵循以下规则:
  • 每张图片保留其原始格式(.jpg或.png)
  • 每张图片保留其原始文件名,但被移动到/thumbnails子文件夹中
  • 每张图片保留其原始纵横比
  • 所有处理后的图片的最终尺寸应在以下约束条件下尽可能大:
  • 最大宽度不超过488像素
  • 最大高度不超过220像素
  • 除了缩放外,每张图片应保留其所有其他属性
我对ImageMagick完全不熟悉,也不知道需要运行哪些命令才能实现这个结果。最终,我希望将这个过程用于一个Jekyll项目,但如果能够通过命令行手动运行这个过程也可以满足我的需求。
非常感谢您的帮助!

这个问题可能更适合在https:/superuser.com上提问。StackOverflow是用于与if/then/else/endif编程问题相关的编程问题,而不是如何使用最终用户工具。在发布更多问题之前,请阅读Help On-topic。祝好运。 - shellter
抱歉。我会在以后发布之前确保考虑到这一点。谢谢让我知道。 - Aaron Sarnat
1个回答

8

ImageMagick的命令行工具mogrify可能是您想要的,可以完成您所需的操作。它可以处理一个文件夹中的多张图片。请参见https://imagemagick.org/Usage/basics/#mogrifyhttps://imagemagick.org/script/command-line-options.php#resize。命令通常类似于以下内容:

Create a new directory to hold your output, say, thumbnails.
Change directory to your folder with the images

mogrify -path path_to/thumbnails -resize 488x220 *


该命令将处理您文件夹中的每个文件。如果您有其他格式的文件,例如txt或其他图像,您不想处理它们,则可以修改命令以仅限于png和jpg格式,如下所示:

mogrify -path path_to/thumbnails -resize 488x220 *.png *.jpg


如果您的目录中有不同大小写和拼写方式的后缀,请在行尾添加add *.PNG *.JPG *.jpeg *.JPEG

其他编程语言有不同的API。请参见https://imagemagick.org/script/sitemap.php#program-interfaces


提醒一下,这个命令有一个问题。path_to导致了以下错误:unable to open image 'path_to/thumbnails/image001.png': No such file or directory @ error/blob.c/OpenBlob/2881但是我只需删除path_to并从src图像文件夹运行即可实现所需的结果。这是我使用的命令,它非常有效:mogrify -path thumbnails -resize 488x220 *.png *.jpg我仍然将您的答案标记为正确答案,因为您的命令有效。我只需要进行一个微调就可以在本地工作。 - Aaron Sarnat
FYI,我使用的是Mac OS 10.14.5。我通过homebrew安装了IM。 版本:ImageMagick 6.9.10-43 Q16 x86_64 2019-05-02 https://imagemagick.org再次感谢您的帮助@fmw42。没有您的帮助,我完全不知道该如何做这件事!!! :) - Aaron Sarnat
正如您所发现的那样,path_to/ 只是您实际路径的占位符。 - fmw42
抱歉!对此感到抱歉... ;) - Aaron Sarnat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接