我应该如何转换以下 imagemagick 命令以在 DOS 中使用?据我了解,我无法直接转换它,必须在批处理文件中使用 for 循环,但到目前为止没有成功。
convert noisy.jpg -crop `convert noisy.jpg -virtual-pixel edge -blur 0x15 -fuzz 15% -trim -format '%wx%h%O' info:` +repage noisy_trimmed_2.jpg
我应该如何转换以下 imagemagick 命令以在 DOS 中使用?据我了解,我无法直接转换它,必须在批处理文件中使用 for 循环,但到目前为止没有成功。
convert noisy.jpg -crop `convert noisy.jpg -virtual-pixel edge -blur 0x15 -fuzz 15% -trim -format '%wx%h%O' info:` +repage noisy_trimmed_2.jpg
您需要该for
命令才能捕获要作为参数传递的命令的输出。可以把它压缩成一行:
for /f "usebackq delims=" %%info in (`convert noisy.jpg -virtual-pixel edge -blur 0x15 -fuzz 15% -trim -format '%wx%h%O' info:`) do convert noisy.jpg -crop %%info +repage noisy_trimmed_2.jpg
最好将 convert.exe 重命名为 imgConvert.exe 之类的名称,这样它就不会与 Windows 转换实用程序冲突。否则,您应该从可执行文件所在的目录运行它,或者指定路径或使用环境变量来访问它。
convert.exe 需要 vcomp100.dll 才能执行。
DOS 不喜欢单引号 (')。在需要引号的地方使用双引号 (")。
无论如何,我让它像这样工作,@devnull 的回答很有帮助,但我没有使用 "usebackq delims=" 。您还需要通过在每个前多放一个 % 来逃避 %。
FOR /F %%A IN ('convert xxx.jpg -virtual-pixel edge -blur 0x15 -fuzz 15%% -trim -format "%%wx%%h%%O" info:') DO convert xxx.jpg -crop %%A +repage yyy.jpg