running imagemagick convert (console application) from python(从 python 运行 imagemagick convert(控制台应用程序))
问题描述
我正在尝试使用 imagemagick 对一些字体进行光栅化,该命令在终端上运行良好:
I am trying to rasterize some fonts using imagemagick with this command which works fine from a terminal:
convert -size 30x40 xc:white -fill white -fill black -font "fontsHelvetica Regular.ttf" -pointsize 40 -gravity South -draw "text 0,0 'O'" draw_text.gif
使用子进程自动运行相同的命令不起作用:
Running the same command using subprocess to automate it does not work:
try:
cmd= ['convert','-size','30x40','xc:white','-fill','white','-fill','black','-font','fontsHelvetica Regular.ttf','-pointsize','40','-gravity','South','-draw',"text 0,0 'O'",'draw_text.gif']
#print(cmd)
subprocess.check_output(cmd,shell=True,stderr=subprocess.STDOUT)
except CalledProcessError as e:
print(e)
print(e.output)
.
Command '['convert', '-size', '30x40', 'xc:white-fill', 'white', '-fill', 'black', '-font', 'fonts\Helvetica Regular.ttf', '-pointsize', '40', '-gravity', 'South', '-draw', "text 0,0 'O'", 'draw_text.gif']' returned non-zero exit status 4
b'Invalid Parameter - 30x40
'
推荐答案
我想通了:原来windows在PATH<中有自己的.convert.exe程序/code>
I figured it out: It turns out that windows has its own convert.exe program in PATH.
以下代码打印 b'C:\Windows\System32\convert.exe
':
The following code prints b'C:\Windows\System32\convert.exe
':
try:
print(subprocess.check_output(["where",'convert'],stderr=subprocess.STDOUT,shell=True))
except CalledProcessError as e:
print(e)
print(e.output)
在终端中运行相同的代码表明 imagemagick 的 convert 会影响 Windows 的 convert:
Running the same code in a terminal shows that imagemagick's convert shadows Windows' convert:
C:UsersNavin>where convert
C:Program FilesImageMagick-6.8.3-Q16convert.exe
C:WindowsSystem32convert.exe
.
安装 ImageMagick 后我没有重新启动 python,所以它的 PATH 仍然指向 Windows 版本.
I did not restart python after installing ImageMagick so its PATH still pointed to the Windows version.
使用完整路径有效:
try:
cmd= ['C:Program FilesImageMagick-6.8.3-Q16convert','-size','30x40','xc:white','-fill','white','-fill','black','-font','fontsHelvetica Regular.ttf','-pointsize','40','-gravity','South','-draw',"text 0,0 'P'",'draw_text.gif']
print(str.join(' ', cmd))
print('stdout: {}'.format(subprocess.check_output(cmd,shell=True,stderr=subprocess.STDOUT)))
except CalledProcessError as e:
print(e)
print(e.output)
这篇关于从 python 运行 imagemagick convert(控制台应用程序)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:从 python 运行 imagemagick convert(控制台应用程序)
基础教程推荐
- 包装空间模型 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 求两个直方图的卷积 2022-01-01
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
