Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to convert a string to an image?

I started to learn python a week ago and want to write a small program that converts a email to a image (.png) so that it can be shared on forums without risking to get lots of spam mails.

It seems like the python standard library doesn't contain a module that can do that but I've found out that there's a PIL module for it (PIL.ImageDraw).

My problem is that I can't seem to get it working.

So basically my questions are:

  1. How to draw a text onto a image.
  2. How to create a blank (white) image
  3. Is there a way to do this without actually creating a file so that I can show it in a GUI before saving it?

Current Code:

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 = "[email protected]"          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") 
like image 508
Marco- Avatar asked Jul 25 '13 11:07

Marco-


People also ask

How do I convert text to an image?

This is extremely simple. Select the text you want “photographed,” and press CTRL-C to copy it to the clipboard. Open Paint 3D in Windows 10 or regular Paint in Windows 8.1 and under—this is the free image editor that comes with Windows. Now press CTRL-V to paste the text as an image, and save the file.

Can we convert image to string?

String img=o. toString(); byte[] imageAsBytes = Base64. decode(img. getBytes(), Base64.

How do I decode text from an image?

The text extractor will allow you to extract text from any image. You may upload an image or document (. pdf) and the tool will pull text from the image. Once extracted, you can copy to your clipboard with one click.


1 Answers

  1. use ImageDraw.text - but it doesn't do any formating, it just prints string at the given location

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

    to find out the text size:

    text_width, text_height = d.textsize('Hello') 
  2. When creating image, add an aditional argument with the required color (white):

    img = Image.new('RGB', (200, 100), (255, 255, 255)) 
  3. until you save the image with Image.save method, there would be no file. Then it's only a matter of a proper transformation to put it into your GUI's format for display. This can be done by encoding the image into an in-memory image file:

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

    or if you use python3:

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

    this can be then send to GUI. Or you can send direct raw bitmap data:

    raw_img_data = img.tostring() 
like image 57
Jan Spurny Avatar answered Oct 10 '22 10:10

Jan Spurny