Mar*_*co- 13 python python-imaging-library
我在一周前开始学习python,并希望编写一个小程序,将电子邮件转换为图像(.png),以便可以在论坛上共享它,而不会冒很多垃圾邮件的风险.
似乎python标准库不包含可以做到这一点的模块,但我发现它有一个PIL模块(PIL.ImageDraw).
我的问题是我似乎无法让它发挥作用.
基本上我的问题是:
谢谢你的帮助 :)
现行代码:
import Image
import ImageDraw
import ImageFont
def getSize(txt, font):
testImg = Image.new('RGB', (1, 1))
testDraw = ImageDraw.Draw(testImg)
return testDraw.textsize(txt, font)
if __name__ == '__main__':
fontname = "Arial.ttf"
fontsize = 11
text = "example@gmail.com"
colorText = "black"
colorOutline = "red"
colorBackground = "white"
font = ImageFont.truetype(fontname, fontsize)
width, height = getSize(text, font)
img = Image.new('RGB', (width+4, height+4), colorBackground)
d = ImageDraw.Draw(img)
d.text((2, height/2), text, fill=colorText, font=font)
d.rectangle((0, 0, width+3, height+3), outline=colorOutline)
img.save("D:/image.png")
Run Code Online (Sandbox Code Playgroud)
Jan*_*rny 23
使用ImageDraw.text- 但它不进行任何格式化,它只是在给定位置打印字符串
img = Image.new('RGB', (200, 100))
d = ImageDraw.Draw(img)
d.text((20, 20), 'Hello', fill=(255, 0, 0))
Run Code Online (Sandbox Code Playgroud)
找出文字大小:
text_width, text_height = d.textsize('Hello')
Run Code Online (Sandbox Code Playgroud)创建图像时,添加具有所需颜色(白色)的aditional参数:
img = Image.new('RGB', (200, 100), (255, 255, 255))
Run Code Online (Sandbox Code Playgroud)直到用Image.save方法保存图像,才会有文件.然后,只需将其转换为GUI的显示格式即可进行适当的转换.这可以通过将图像编码到内存中的图像文件中来完成:
import cStringIO
s = cStringIO.StringIO()
img.save(s, 'png')
in_memory_file = s.getvalue()
Run Code Online (Sandbox Code Playgroud)
然后可以将其发送到GUI.或者您可以发送直接原始位图数据:
raw_img_data = img.tostring()
Run Code Online (Sandbox Code Playgroud)前 3 行不完整,当我没有错的时候。正确的代码是:
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36024 次 |
| 最近记录: |