【发布时间】:2015-03-07 23:35:33
【问题描述】:
我准备了一些代码来执行这样的命令行:
c:\cygwin\bin\convert "c:\root\dropbox\www\tiff\photos\architecture\calendar-bwl-projekt\bwl01.tif" -thumbnail 352x352^ -format jpg -filter Catrom -unsharp 0x1 "c:\root\dropbox\www\tiff\thumbnails\architecture\calendar-bwl-projekt\thumbnail\bwl01.jpg"
这在命令行中可以正常工作(与上面的命令相同),但 352x352^ 是 352x352^ 而不是 352x352:
c:\cygwin\bin\convert "c:\root\dropbox\www\tiff\photos\architecture\calendar-bwl-projekt\bwl01.tif" -thumbnail 352x352^ -format jpg -filter Catrom -unsharp 0x1 "c:\root\dropbox\www\tiff\thumbnails\architecture\calendar-bwl-projekt\thumbnail\bwl01.jpg"
如果从 python 运行此代码 - 字符 '^' 被忽略并且调整大小的图像的大小为 '%sx%s' 传递而不是 %sx%s^ - 为什么 Python 会剪切 '^' 字符以及如何避免它?:
def resize_image_to_jpg(input_file, output_file, size):
resize_command = 'c:\\cygwin\\bin\\convert "%s" -thumbnail %sx%s^ -format jpg -filter Catrom -unsharp 0x1 "%s"' \
% (input_file, size, size, output_file)
print resize_command
resize = subprocess.Popen(resize_command)
resize.wait()
【问题讨论】:
-
尝试将列表传递给
Popen,而不是字符串。这有时会有所帮助。 -
@Kevin 不管看到下面的模块代码列表都会加入。
-
无关:
Popen(cmd).wait()是subprocess.call(cmd)。
标签: python windows python-2.7 imagemagick subprocess