我在ImageMagick的文档中看到,我可以使用类似magick @myfiles.txt
的东西向输入发送多个文件名(在我的情况下,我不能使用globbing,因为它们是随机的(,但唯一可用的示例将它们组合成一个输出。
有没有一种方法可以使用此功能为每个输入输出单独的文件?如果没有,如何在Powershell中实现这一点?类似Get-content filenames.txt | ForEach-Object {magick}
的东西?
我还没有测试过,所以在尝试之前,请在临时目录中复制一些文件。
制作一个名为RESULTS
的输出目录,并调整files.txt
中列出的一堆文件的大小
mkdir RESULTS
magick mogrify -resize 64x64 -path RESULTS @files.txt
使用mogrify
要非常小心,如果不指定-path
,它会非常非常快地覆盖很多文件。
如果您的ImageMagick命令很简单,并且命令行中只有一个图像,那么您可以使用magik mogrify来处理文件夹中的每个图像。否则,您可以使用-set-filename在magik命令行中使用多个输入/输出图像的文件名。但是,如果您有太多的输入图像,那么您将耗尽RAM,因为ImageMagick在magick命令中一次加载所有输入图像。magick mogrify一次读一个。对于magik命令,您可以执行
magick @myfiles.txt -set filename:fn "%t" <commands> +adjoin "%[filename:fn]_processed.suffix"
%t获取不带后缀的文件名。看见https://imagemagick.org/script/escape.php
另请参阅https://archive.imagemagick.org/Usage/basics/#mogrify
对不起,我不了解Powershell。