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:
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")
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.
String img=o. toString(); byte[] imageAsBytes = Base64. decode(img. getBytes(), Base64.
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.
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')
When creating image, add an aditional argument with the required color (white):
img = Image.new('RGB', (200, 100), (255, 255, 255))
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()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With