我正在使用python脚本将xml文件转换为图像(最好是png文件)。我在网上研究中发现的不多。我正在尝试使用PIL。从StackOverflow的this post中,我可以找到以下代码:
from PIL import Image
import ImageFont, ImageDraw
image = Image.new("RGBA", (288,432), (255,255,255))
usr_font = ImageFont.truetype("resources/HelveticaNeueLight.ttf", 25)
d_usr = ImageDraw.Draw(image)
d_usr = d_usr.text((105,280), "MYTEXT",(0,0,0), font=usr_font)
但是我不太了解发生了什么。我试图用实际的xml文件内容替换“ MYTEXT”,但它不起作用。
我基本上是在寻找任何解决方案(理想情况下是使用PIL,但它可以是python的另一个模块)。我使用imgkit接近了:
import imgkit
imgkit.from_file('example_IN.xml','example_OUT.png')
返回png文件。图像的分辨率非常糟糕,并且位于一个非常大的白色矩形内。我可能会缺少一些东西。我知道您可以修改imgkit的选项,但是即使检查了文档之后,我也不知道要进行哪些修改。任何帮助将不胜感激。
非常感谢!最好的祝福。
我参加了pyvips:
#!/usr/bin/env python3
import sys
import pyvips
from xml.sax.saxutils import escape
# load first arg as a string
txt = open(sys.argv[1], "r").read()
# pyvips allows pango markup in strings -- you can write stuff like
# text("hello <i>sailor!</i>")
# so we need to escape < > & in the text file
txt = escape(txt)
img = pyvips.Image.text(txt)
# save to second arg
img.write_to_file(sys.argv[2])
您可以这样运行它:
./txt2img.py vari.ws x.png
为此:
非常快-在这台普通的笔记本电脑上运行需要300毫秒。
text
方法有很多选项,如果您想获得更高的分辨率,更改对齐方式等。
https://libvips.github.io/libvips/API/current/libvips-create.html#vips-text