1

我应该如何转换以下 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
4

3 回答 3

1

您需要该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
于 2013-05-02T11:58:28.993 回答
1

最好将 convert.exe 重命名为 imgConvert.exe 之类的名称,这样它就不会与 Windows 转换实用程序冲突。否则,您应该从可执行文件所在的目录运行它,或者指定路径或使用环境变量来访问它。

convert.exe 需要 vcomp100.dll 才能执行。

DOS 不喜欢单引号 (')。在需要引号的地方使用双引号 (")。

于 2013-08-12T16:36:55.287 回答
0

无论如何,我让它像这样工作,@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
于 2013-05-02T15:15:49.650 回答