使用ImageMagick转换多个图像
我想使用ImageMagick将我的所有PNG转换为PNG(我需要这样做,因为AndroidStudio对原始PNG有一些问题。ImageMagick可以通过重新导出PNG来解决此问题。) 如果我这样做:使用ImageMagick转换多个图像,imagemagick,Imagemagick,我想使用ImageMagick将我的所有PNG转换为PNG(我需要这样做,因为AndroidStudio对原始PNG有一些问题。ImageMagick可以通过重新导出PNG来解决此问题。) 如果我这样做:convert a.png a.png 但是如何对许多文件(包括子目录中的文件)执行此操作?尝试此命令。从要转换所有图像的最顶层目录启动: find . -name "*.png" \ | while read image; do \ convert "${image}"
convert a.png a.png
但是如何对许多文件(包括子目录中的文件)执行此操作?尝试此命令。从要转换所有图像的最顶层目录启动:
find . -name "*.png" \
| while read image; do \
convert "${image}" "${image/.png/---repaired.png}
done
注意事项:如果您有后缀为.PNG
或.PNG
或类似后缀的PNG文件,该命令将不适用于这些文件。对于这种情况,命令需要一些修改…对于Windows用户--您可以在cmd.exe
窗口中尝试此操作:
for %i in (*.png *\*.png *\*\*.png *\*\*\*.png) do (
convert.exe %i %~pni---repaired.png
)
这将循环通过当前目录的PNG以及子目录3级中的PNG
您必须确保您的convert.exe
确实是来自ImageMagick的文件——相应地设置环境变量%PATH%
。否则,当命令要使用同名的磁盘格式转换convert.exe
命令时,您可能会遇到错误
如果不确定,请使用IMconvert.exe的完整路径,例如:
D:\programs\imagemagick-install-dir\convert.exe %i %~pni---repaired.png
另外,请记住:如果将上述命令放入*.bat
文件,则必须将每次出现的%
加倍。因此,直接命令中的%i
将成为批处理文件中的%i
如果您在Vista/Windows7/2008/8(或安装了的Windows XP)上,则可以使用for files.exe
,该文件可用于循环文件:
forfiles.exe ^
/p <path> ^
/m *.png ^
/s ^
/C "convert.exe @file @fname---repaired.png"
forfiles.exe^
/p^
/m*.png^
/^
/C“convert.exe@file@fname--repaired.png”
我创建了一个包含此命令的.bat文件,并将其放在最上面的目录中,以管理员的身份运行,但什么也没发生。我必须指定我对批不太熟悉。@AlexandruCircus:此命令不适用于*.bat
。它适用于Linux、Unix和Mac OS X。您没有声明您在Windows上。我将在稍后或明天试一试Windows版本(我目前远离安装了ImageMagick的Windows box…。@AlexandruCircus:你试过这两个版本中的哪一个?我试过第二个版本,并且工作(针对文件)。我唯一更改的是:/c“cmd/c convert.exe@file@file”。我添加了cmd/c命令…(还覆盖了原始文件-我不需要重复)forfiles/p“pathToMyImagesDirs”/m*.png/s/c“cmd/c convert@file@file”@AlexandruCircus:我总是羞于覆盖原始文件。。。以防万一出了问题。“害羞总比抱歉好”:)如果它将多个输入图像合并到一个输出中呢?在这种情况下不能使用循环,但也不能在不进行全局搜索的情况下指定多个输入图像?