我想使用“转换”来调整多个图像的大小。这在命令行中非常有效。但是,当我尝试使用 subprocess.Popen 从 Python3 中实现相同的功能时,标志 '\!' 指定在调整大小期间应忽略图像的纵横比,不起作用。从 我想要 而不是开始 从命令行这可以正常使用convert source.png -resize 1230x80\! out_console.png如果我从 Python3 中运行此命令,则使用#!/usr/bin/env python3# -*- coding: utf-8 -*-from subprocess import Popencmd = [ 'convert', 'source.png', '-resize', r'1230x80\!', # Use '\!' ignoring the aspect ratio 'out_subprocess.png', ]proc = Popen(cmd)proc.communicate()结果没有调整大小:我尝试使用r'1230x80\!'或未'1230x80\\!'成功转义反斜杠字符。
2 回答
UYOU
TA贡献1878条经验 获得超4个赞
!需要转义,因为您在 shell 中运行。但是命令本身不理解\,Popen也不使用shell(除非你使用shell=True,但避免像瘟疫一样)
所以你只是过分这样做了。
相反,传递参数而不引用或转义:
cmd = [
'convert',
'source.png',
'-resize',
'1230x80!',
'out_subprocess.png',
]
现在你有了一个甚至可以在 Windows 上运行的便携式命令行(好吧,在 Windows 上有一个convert命令根本不做同样的事情,所以你必须指定convert命令的完整路径)
添加回答
举报
0/150
提交
取消