以下snipet工作正常,并在/ sliced子文件夹中创建切片。
FOR %%a in (C:\someFolder\*.png) DO (
ECHO Processing file: "%%~nxa"
convert %%a -crop 3x3@ +repage +adjoin %~dp0\sliced\%%~na.png
)
然而,生成的瓷砖的编号很难看。它的形式如下:FileName-0.png,FileName-1.png,
我想从1开始并使用下划线,如:FileName_1.png,FileName_2.png, 我怎么能这样做?
答案 0 :(得分:1)
我以后无法对此进行测试,但我认为您可以将场景编号设置为1,如下所示:
convert image.jpg -crop ... -scene 1 ...
这应该使编号从1开始而不是0.
另外,如果你将%d
放在输出文件名中,它会将场景编号放在那里,所以你可能想要
convert image.jpg -crop ... -scene 1 ... file_%d.jpg
您可能需要将Windows糟糕的批处理语言中的百分号加倍,或者可能在它前面放置一个插入符号^
。我认为这是你需要的插入符号......
以下是将9x9像素的灰度图像切割成图块的示例:
convert xc:gray[9x9] -crop 3x3@ -scene 23 +repage file_%d.png
生成的文件
-rw-r--r-- 1 mark staff 263 4 Oct 11:18 file_23.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:18 file_24.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:18 file_25.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:18 file_26.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:18 file_27.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:18 file_28.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:18 file_29.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:18 file_30.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:18 file_31.png
如果您希望场景编号为零填充,请使用%04d
,例如:
convert xc:gray[9x9] -crop 3x3@ -scene 23 +repage file_%04d.png
生成的文件
-rw-r--r-- 1 mark staff 263 4 Oct 11:21 file_0023.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:21 file_0024.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:21 file_0025.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:21 file_0026.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:21 file_0027.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:21 file_0028.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:21 file_0029.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:21 file_0030.png
-rw-r--r-- 1 mark staff 263 4 Oct 11:21 file_0031.png
事实上,你可以通过这样使用for loop
来避免整个丑陋的mogrify
,延迟扩展,双百分比,感叹号混乱的Windows:
mogrify -crop 3x3@ -scene 34 -path sliced *png
如果您当前目录中有a.png
和b.png
的文件,则会导致:
sliced/a-34.png
sliced/a-35.png
sliced/a-36.png
sliced/a-37.png
sliced/a-38.png
sliced/a-39.png
sliced/a-40.png
sliced/a-41.png
sliced/a-42.png
sliced/b-34.png
sliced/b-35.png
sliced/b-36.png
sliced/b-37.png
sliced/b-38.png
sliced/b-39.png
sliced/b-40.png
sliced/b-41.png
sliced/b-42.png
我认为你不能用mogrify
来实现下划线和零填充。但你仍然可以像我在答案开始时所说的那样使用convert
。
在Windows中,您可能需要加倍百分号,或者使用插入符^
进行转义 - 不确定那里的疯狂语法。
答案 1 :(得分:0)
setlocal enabledelayedexpansion
set count=1
for %%a in (C:\someFolder\*.png) do (
echo processing file: !count!: "%%~nxa"
convert %%a -crop 3x3@ +repage +adjoin %~dp0sliced\%%~na_!count!.png
set /a count+=1
)
使用前导零,实际上是3位数字,如果您需要4位数字,请将!lz:~-3!
更改为!lz:~-4!
setlocal enabledelayedexpansion
set count=1
for %%a in (C:\someFolder\*.png) do (
set lz=0000!count!
echo processing file: !lz:~-3!: "%%~nxa"
convert %%a -crop 3x3@ +repage +adjoin %~dp0sliced\%%~na_!lz:~-3!.png
set /a count+=1
)