如何在使用PythonMagick渲染PNG时设置背景颜色
我正在尝试用PythonMagick把SVG格式的图片转换成PNG格式,但发现背景颜色没有被识别。
用ImageMagick的命令行工具,效果是正常的:
tmp$ convert -background none access.svg access.png
tmp$ convert -background red access.svg access2.png
这样转换出来的图片背景分别是透明和红色。
但是用PythonMagick的时候,背景颜色似乎被忽略了:
import PythonMagick
svg = PythonMagick.Image('access.svg')
svg.backgroundColor().to_std_string()
'#FFFFFFFFFFFF'
svg.backgroundColor().alpha()
0.0
svg.backgroundColor('none')
svg.backgroundColor().to_std_string()
'#0000000000000000'
svg.backgroundColor().alpha()
1.0
svg.write('access.png')
svg.backgroundColor('red')
svg.backgroundColor().to_std_string()
'#FFFF00000000'
svg.backgroundColor().alpha()
0.0
svg.write('access2.png')
检查输出后发现,两个PNG图片的背景都是白色的。有没有其他方法可以设置背景颜色,让它在生成图片时被识别?
6 个回答
0
这可能是个绕圈子的办法,但你可以先创建一个你想要的颜色的背景图,然后把这些图像组合在一起吗?
我想效果可能是这样的:
image.composite(background, 0, 0, PythonMagick.CompositeOperator.SrcOverDst)
我对PythonMagick的经验很少,但在我尝试设置背景失败后,我会试试这个方法。
来源:
- http://www.imagemagick.org/Magick++/Image.html
_CompositeOperator.cpp
在PythonMagick的源代码中
0
如果用命令可以正常工作,那我觉得没什么问题,你可以这样做:
image = 'convert -background red access.svg access.png'
os.system(image)
别忘了要导入os这个模块哦。
import os
另外,你还可以在命令里面使用变量(记得给变量重新命名):
image = 'convert -background '+background+' '+file_from+' '+file_to
1
ImageMagick(还有它的Python接口PythonMagick)对SVG文件的支持非常差。你不要指望它能按照SVG规范来正确显示SVG文件。它会把SVG转换成一种内部的MVG语言,然后再转成PNG格式。你可以查看这个链接了解更多信息:http://www.imagemagick.org/script/magick-vector-graphics.php
ImageMagick 并不是一个用来处理矢量图形的工具。