ImageMagick Mogrify 递归压缩图像

ImageMagick Mogrify 递归压缩图像

Windows 10。ImageMagick v7.1.0-62

我需要使用 ImageMagick 压缩和优化大量 .jpg 图像。我使用以下命令,该命令有效(这会覆盖原始文件,这正是我想要的)。

我在所需文件夹中在 Windows 命令行中运行它(例如folder 1

magick morgify -gaussian-blur 0.05 -colorspace RGB -strip -quality 50 -interlace Plane *.jpg

问题是这个命令一次只能处理一个文件夹。我该如何改变它以便它从我的根文件夹递归运行到所有子文件夹。

我的文件结构如下;

- images
- - folder 1
- - - folder 1a
- - - folder 1b
- - folder 2
- - folder 3
- - - folder 3a
- - - folder 3b

答案1

您可以循环目录。在 PowerShell 中,它非常简单:

Get-ChildItem -Directory -Recurse | % { mogrify -gaussian-blur 0.05 -colorspace RGB -strip -quality 50 -interlace Plane "$($_.FullName)/*.jpg" }

它获取所有子目录,然后使用ForEach-Object%)遍历返回的结果并mogrify为每个子目录调用命令。

请注意,mogrify如果其中一个子目录没有任何 jpg,则会引发错误,但无论如何,该命令将继续对所有子目录执行。

它也不包括您调用命令的文件夹,但您可以使用.ps1上面的代码创建一个脚本,并mogrify -gaussian-blur 0.05 -colorspace RGB -strip -quality 50 -interlace Plane *.jpg在其中包含命令以在那里运行它,然后执行该脚本。

相关内容