ImageMagick 批量处理图片 (2016.10.30更新)
ImageMagick 批量处理图片
很久没有写文了,这次来写一下在实习的时候遇见的一个问题,做一些社区活动的时候,合作方会提供一些图片,但是这些图片是不完整的,需要一张一张地从上到下拼接起来,提供的文件组织形式是以下的样子的:
- 001
- 001.jpg
- 002.jpg
- 003.jpg
- 004.jpg
- 005.jpg
- 002
- 001.jpg
- 002.jpg
- 003.jpg
- 004.jpg
- 005.jpg
如果只有几张的话,用 IrfanView 合并全景图(图像→创建全景图像
)功能就相当方便了,但是,实际数量有接近 100 个文件夹,我去看了看 IrfanView 的命令行参数,好像没有合并拼接这个功能,于是只能转用 ImageMagick,最后把压缩,增大图片大小和缩放的功能也加上,写了一个批处理。
@echo off
set convertexe=d:\1-Program\0-CommandLineTools\ImageMagick\convert.exe
set InPutPath=d:\3-FastStone\InPut
:Menu
echo 1.横向合并图片
echo 2.纵向合并图片
echo 3.压缩图片(默认压缩率80%,不改变宽高,覆盖源文件)
echo 4.缩放图片(默认是600x400,覆盖源文件)
echo 5.增大图片(利用CMYK使图片的体积变大,覆盖源文件)
echo.&echo.
set /p choose=输入数字并按回车:
if "%choose%"=="1" set imoption=+append&Goto ProcessPicALL
if "%choose%"=="2" set imoption=-append&Goto ProcessPicALL
if "%choose%"=="3" set imoption=-quality 80&Goto ProcessPic
if "%choose%"=="4" set imoption=-resize 600x400&Goto ProcessPic
if "%choose%"=="5" set imoption=-colorspace CMYK&Goto ProcessPic
:ProcessPicALL
for /d %%d in ( %InPutPath%\* ) do (
cd %%d
%convertexe% %imoption% *.* all%%~nd.jpg
pause
)
exit
:ProcessPic
for /d %%d in ( %InPutPath%\* ) do (
cd %%d
for %%p in (*) do %convertexe% %imoption% %%p %%~np.jpg
)
exit