我在Mac上有一个.JPG文件列表。我想将它们导出为每个图像占用少于500 KB的格式。 我知道如何使用“预览”应用程序一次执行一次操作。但我希望能够批量执行相同的操作,即一次处理多个文件。有没有一种命令行方法可以执行,因此我可以编写脚本并在终端中运行它? 还是我可以使用的其他方式?
答案 0 :(得分:2)
这是从命令行使用convert(brew info imagemagick
)将一个目录中的所有*.jpg
图像转换为.png
的示例:
$ for i in *.jpg; do
convert "$i" "${i%.jpg}.png"
done
要进行(空运行)测试,可以使用echo
代替<command>
:
$ for i in *.jpg; do
echo "$i" "${i%.jpg}.png"
done
这将在目录中搜索扩展名为.jpg
的文件,然后执行命令convert
,将文件名$i
作为参数传递,然后使用相同的文件名删除扩展名并添加新的.png
,可使用以下方法完成:
"${i%.jpg}.png"
使用双引号"
表示案例文件可能包含空格,请检查此以获取更多详细信息:shell parameter expansion
例如,要更改文件的质量,可以使用:
convert "$i" -quality 80% "${i%.jpg}-new.jpg"
或者如果不需要保留原件:
mogrify -quality 80% *.jpg
主要区别在于,“转换”通常用于处理单个图像,而“迁移”则用于批处理多个文件。
答案 1 :(得分:1)
安装ImageMagick。 (真的..它轻巧而且令人惊叹)使用Homebrew进行安装很不错。然后...
cd [FilepathWithImages] && mogrify -define jpeg:extent=60kb -resize 400 *.JPG
du -sh *
来查看您所在目录中每个文件的大小。 注意:*.JPG
必须大写才能起作用
工作原理:
cd [yourfilepath]
将导航到您想要进入的目录
&&
用于链接命令
如果您要保留相同的文件名,请使用mogrify
-define jpeg:extent=60kb
将最大文件大小设置为60kb
-resize 400
将设置宽度
*.JPG
适用于您所在目录中的所有文件。
imagemagick转换和迁移可以使用许多其他命令。安装后,您可以使用man mogrify
查看可以链接到它的命令。
根据the docs,“限制最大JPEG文件大小,例如-define jpeg:extent=400KB
。JPEG编码器将搜索最高压缩质量级别,从而导致输出文件的大小不超过该值从版本6.9.2-5开始也将使用-quality
选项。在6.9.1-0和6.9.2-4之间,添加-quality 100
以便将jpeg:extent
添加到正常工作。在6.9.1-0之前,-quality
设置已被忽略。“
答案 2 :(得分:0)
从Homebrew或MacPorts或从https://imagemagick.org/script/download.php#macosx安装ImageMagick。然后使用mogrify使用-define jpeg:extent = 500KB保存为JPG来处理文件夹中的所有文件。
我的桌面上的文件夹test1中有两个文件。处理会将它们放入我桌面上的文件夹test2
Before Processing:
mandril.tif 3.22428MB (3.2 MB)
zelda.png 726153B (726 KB)
cd
cd desktop/test1
mogrify -path ../test2 -format jpg -define jpeg:extent=500KB *
After Processing:
mandril.jpg 358570B (359 KB)
zelda.jpg 461810B (462 KB)
请参见https://imagemagick.org/Usage/basics/#mogrify
最后的*表示处理文件夹中的所有文件。如果只想限制为jpg,则将其更改为* .jpg。 -format表示您希望输出为jpg。
答案 3 :(得分:0)
免责声明:由于以下解决方案是“破坏性”命令,因此请注意,直接替换为质量较低的文件
现在您已经阅读了我的免责声明,我建议您获得cwebp,以便您可以下载here。
您还需要使用并行sudo apt-get install -y parallel
,然后创建了以下脚本:
parallel cwebp {} -resize 0 640 -m 6 -sns 100 -q 80 -preset photo -segments 4 -f 100 -o {} ::: *.jpg && /
find -name "*.jpg" | parallel 'f="{}" ; mv -- {} ${f:0:-3}webp'
640是生成的文件高度(以像素为单位),之前为0表示宽度将适应宽度和高度之间的比率。 我将质量降低到80%(-q 80),您不会发现太大的差异。
第二行查找所有已转换但仍具有错误的扩展名文件(.jpg)的文件,因此它将删除最后3个字符(jpg)并添加webp。
我从每个文件5 Mb增加到大约5万(.jpg图像为4000x4000像素),仅节省了20 Gb的存储空间。我希望你喜欢它!
如果您不想使用webp格式,则可以改用以下内容(也许您需要安装imageMagick):
parallel convert {} -resize x640 -sampling-factor 4:2:0 -strip -quality 85 \
-interlace JPEG -colorspace RGB -define jpeg:dct-method=float {} ::: *.jpg