当前位置: 首页 > 面试题库 >

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

夏宏旷
2023-03-14
问题内容

一周前,我开始学习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')
  1. 创建图像时,请添加具有所需颜色(白色)的附加参数:

    img = Image.new('RGB', (200, 100), (255, 255, 255))
    
  2. 除非您使用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()


 类似资料:
  • 问题内容: 我将图像转换为 base64 字符串,并将其从android设备发送到服务器。现在,我需要将该字符串改回图像并将其保存在数据库中。 有什么帮助吗? 问题答案: 尝试这个:

  • 问题内容: 我正在阅读有关python的新f字符串的 博客 ,它们看起来很整洁。但是,我希望能够从字符串或文件中加载f字符串。 我似乎找不到任何执行此操作的字符串方法或其他函数。 从上面我的链接中的示例: 但是,如果我有琴弦怎么办?我希望能够像这样: 事实证明,我已经可以执行类似的操作并获得性能提高。即: 问题答案: f字符串是代码。不仅以安全的方式(当然,字符串文字就是代码),而且以危险的任意代

  • 问题内容: 我有一个,我需要一个。如何从一个转换为另一个? 问题答案: 好问题。我有以下五种 6种方法可以做到这一点。 注意:返回。因此有效地两者是相同的。 调用,这又设置了数组。 另一方面,调用以下程序包私有构造函数。 从源代码中的Java 8的源代码 因此似乎是最有效的方法,在这两个存储器和速度方面,用于转换char到String。

  • 问题内容: 我有一个包含HTML标记的字符串变量。该HTML标记基本上表示电子邮件内容。 现在,我想从该字符串内容创建一个图像,该图像实际上包含HTML标记。我不想通过将这些内容写入它们来创建HTML文件。我只想使用此字符串创建图像文件。 这是我所拥有的: 如何从该字符串内容创建图像? 问题答案: 感谢大家的回应。我使用HtmlRenderer外部dll(库)来实现相同目的,并在下面的代码中找到了

  • 问题内容: 我正在尝试使用jQuery插件即crop.js裁剪/调整用户个人资料图像的大小,该插件通过ajax将用户图像作为base64发送给我的控制器 但我无法解码此base64 字符串作为图像,你们可以指导我如何将base64字符串作为图像保存在服务器上吗? 问题答案: 假设有几件事,您知道输出文件名是什么,并且您的数据以字符串形式出现。我确定您可以修改以下内容以满足您的需求: 请注意,这只是

  • 我正在尝试使用jquery插件裁剪/调整用户配置文件图像的大小,即crop.js,它将用户图像作为base64通过ajax发送到我的控制器