使用 ImageMagick 批量拆分 JPEG
Batch split JPEG using ImageMagick
我使用以下命令在生成两个文件的文件夹中裁剪和拆分 jpg 名称 page000.jpg
convert page000.jpg -crop 2x1@ +repage -colorspace gray ^
+dither -colors 4 page000_%d.jpg
这两部分将命名为page000_0.jpg和page000_1.jpg
它运行良好,但我想重写此代码以处理目录中的每个 JPEG。
我为 DOS (.bat) 编写了这个批处理代码:
mkdir split
FOR %%f IN (*.jpg) DO xcopy %%f split\
cd split
FOR %%f IN (*.jpg) DO convert %%f -crop 2x1@ +repage -colorspace gray ^
+dither -colors 4 %%f_%d.jpg
然而,它无法工作。
您需要转义需要由转换解析器而非批处理解析器解释的百分号。
set "parameters=-crop 2x1@ +repage -colorspace gray +dither -colors 4"
FOR %%f IN (*.jpg) DO convert "%%f" %parameters% "%%~nf_%%d.jpg"
^^ the escaped percent sign
但是,由于for
命令不使用静态文件列表(在for
命令迭代时检索列表),也可以处理在此过程中生成的文件。要解决它你可以
1 - 使用静态列表将您的 for
命令更改为 for /f
命令以首先使用 dir
命令检索文件列表
for /f "delims=" %%f in ('dir /b /a-d *.jpg') do .....
2 - 处理来自原始目录的输入文件并将输出放在 split
目录中。这样,由于生成的文件没有放在正在处理的同一文件夹中,因此不会被检测到。
mkdir split
set "parameters=-crop 2x1@ +repage -colorspace gray +dither -colors 4"
FOR %%f IN (*.jpg) DO convert "%%f" %parameters% "split\%%~nf_%%d.jpg"
您不需要将文件复制到 split
子目录,您可以 convert
从它们所在的位置读取它们:
for %f in (*.jpg) do convert %f -crop 2x1@ +repage -colorspace gray +dither -colors 4 split/%~nf_%d.jpg
我使用以下命令在生成两个文件的文件夹中裁剪和拆分 jpg 名称 page000.jpg
convert page000.jpg -crop 2x1@ +repage -colorspace gray ^
+dither -colors 4 page000_%d.jpg
这两部分将命名为page000_0.jpg和page000_1.jpg
它运行良好,但我想重写此代码以处理目录中的每个 JPEG。
我为 DOS (.bat) 编写了这个批处理代码:
mkdir split
FOR %%f IN (*.jpg) DO xcopy %%f split\
cd split
FOR %%f IN (*.jpg) DO convert %%f -crop 2x1@ +repage -colorspace gray ^
+dither -colors 4 %%f_%d.jpg
然而,它无法工作。
您需要转义需要由转换解析器而非批处理解析器解释的百分号。
set "parameters=-crop 2x1@ +repage -colorspace gray +dither -colors 4"
FOR %%f IN (*.jpg) DO convert "%%f" %parameters% "%%~nf_%%d.jpg"
^^ the escaped percent sign
但是,由于for
命令不使用静态文件列表(在for
命令迭代时检索列表),也可以处理在此过程中生成的文件。要解决它你可以
1 - 使用静态列表将您的 for
命令更改为 for /f
命令以首先使用 dir
命令检索文件列表
for /f "delims=" %%f in ('dir /b /a-d *.jpg') do .....
2 - 处理来自原始目录的输入文件并将输出放在 split
目录中。这样,由于生成的文件没有放在正在处理的同一文件夹中,因此不会被检测到。
mkdir split
set "parameters=-crop 2x1@ +repage -colorspace gray +dither -colors 4"
FOR %%f IN (*.jpg) DO convert "%%f" %parameters% "split\%%~nf_%%d.jpg"
您不需要将文件复制到 split
子目录,您可以 convert
从它们所在的位置读取它们:
for %f in (*.jpg) do convert %f -crop 2x1@ +repage -colorspace gray +dither -colors 4 split/%~nf_%d.jpg