How can I write Persian text on photos with the help of Pillow Library in Python? When I try to write text, the letters of the word are written from the end to the beginning.
For example, when I want to write "Hello World" in Persian, it becomes "dolW olleH" on the photo.
pillow persian writing problem:
from PIL import Image, ImageDraw, ImageFont
a = Image.open('1.jpg')
draw = ImageDraw.Draw(a)
font = ImageFont.truetype('Dana.ttf', size=200)
draw.text((100, 200), 'سلام دنیا', font=font, fill=(255, 255, 255))
See this. It'll help you to write in Arabic/Persian in Pillow.
# Tested on Python 3.6.1
# install: pip install --upgrade arabic-reshaper
import arabic_reshaper
# install: pip install python-bidi
from bidi.algorithm import get_display
# install: pip install Pillow
from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw
# use a good font!
fontFile = "/Users/amirreza/pil/Sahel.ttf"
# this was a 400x400 jpg file
imageFile = "/Users/amirreza/pil/input.jpg"
# load the font and image
font = ImageFont.truetype(fontFile, 18)
image = Image.open(imageFile)
# first you must prepare your text (you dont need this step for english text)
text = "سلام ایران"
reshaped_text = arabic_reshaper.reshape(text) # correct its shape
bidi_text = get_display(reshaped_text) # correct its direction
# start drawing on image
draw = ImageDraw.Draw(image)
draw.text((0, 0), bidi_text, (255,255,255), font=font)
draw = ImageDraw.Draw(image)
# save it
image.save("output.png")