gpt4 book ai didi

python - 如何将字符串转换为图像?

转载 作者:太空狗 更新时间:2023-10-29 17:26:38 25 4
gpt4 key购买 nike

我一周前开始学习 python,想编写一个小程序,将电子邮件转换为图像 (.png),以便可以在论坛上共享它,而不必冒收到大量垃圾邮件的风险。

似乎 python 标准库不包含可以执行此操作的模块,但我发现它有一个 PIL 模块 (PIL.ImageDraw).

我的问题是我似乎无法让它工作。

所以基本上我的问题是:

  1. 如何在图片上绘制文字。
  2. 如何创建空白(白色)图像
  3. 有没有一种方法可以在不实际创建文件的情况下执行此操作,以便我可以在保存之前在 GUI 中显示它?

当前代码:

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")

最佳答案

  1. 使用 ImageDraw.text - 但它不做任何格式化,它只是在给定位置打印字符串

    img = Image.new('RGB', (200, 100))
    d = ImageDraw.Draw(img)
    d.text((20, 20), 'Hello', fill=(255, 0, 0))

    找出文字大小:

    text_width, text_height = d.textsize('Hello')
  2. 创建图像时,添加一个带有所需颜色(白色)的附加参数:

    img = Image.new('RGB', (200, 100), (255, 255, 255))
  3. 在您使用 Image.save 方法保存图像之前,不会有文件。然后将其转换为您的 GUI 格式进行显示只是一个适当的转换问题。这可以通过将图像编码为内存图像文件来完成:

    import cStringIO
    s = cStringIO.StringIO()
    img.save(s, 'png')
    in_memory_file = s.getvalue()

    或者如果你使用 python3:

    import io
    s = io.BytesIO()
    img.save(s, 'png')
    in_memory_file = s.getvalue()

    然后可以将其发送到 GUI。或者您可以直接发送原始位图数据:

    raw_img_data = img.tostring()

关于python - 如何将字符串转换为图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17856242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com