5

PIL kullanarak PYF-8 karakterleri bir görüntüye basacak bir kod var.Bidi metnini bir görüntünün üzerine yazdırma

Ben Arapça gibi Bidi komut katılmak için, aynı kodu doğru karakterleri bağlamak için başarısız olduğunu fark ettik

herkes bir yöntem tavsiye edebilir (ilk formlar sadece seçilen medial ve son formları kullanılmamaktadır edilir) veya bu özel sorunu çözmek için teknik mi? Eğer PIL kullanmaya devam etmek istiyorsanız

+0

Ben sadece kendi internet sitesine bir göz aldık ve Tahminimce kütüphane, BIDI'yi doğru şekilde kullanabilme yeteneğine sahip değil. Onlar yaparlarsa kesinlikle reklam vermezler. –

+0

Herhangi bir yardımın [this] (http://pypi.python.org/pypi/python-bidi/) var mı? –

cevap

0

Yaptığım şey şudur: Python + Wand (Python Lib) + arabic_reshaper (Python Lib) + bidi.algorithme (Python Lib). Aynı PIL için de geçerlidir/Yastık, kullanmak gerekir arabic_reshaper ve bidi.algorithm ve oluşturulan metin geçmek draw.text((10, 25), artext, font=font) için:

from wand.image import Image as wImage 
from wand.display import display as wdiplay 
from wand.drawing import Drawing 
from wand.color import Color 
import arabic_reshaper 
from bidi.algorithm import get_display 

reshaped_text = arabic_reshaper.reshape(u'لغةٌ عربيّة') 
artext = get_display(reshaped_text) 

fonts = ['C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\DroidNaskh-Bold.ttf', 
     'C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\Thabit.ttf', 
     'C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\Thabit-Bold-Oblique.ttf', 
     'C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\Thabit-Bold.ttf', 
     'C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\Thabit-Oblique.ttf', 
     'C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\majalla.ttf',   
     'C:\\Users\\PATH\\TO\\FONT\\Thabit-0.02\\majallab.ttf', 

     ] 
draw = Drawing() 
img = wImage(width=1200,height=(len(fonts)+2)*60,background=Color('#ffffff')) 
#draw.fill_color(Color('#000000')) 
draw.text_alignment = 'right'; 
draw.text_antialias = True 
draw.text_encoding = 'utf-8' 
#draw.text_interline_spacing = 1 
#draw.text_interword_spacing = 15.0 
draw.text_kerning = 0.0 
for i in range(len(fonts)): 
    font = fonts[i] 
    draw.font = font 
    draw.font_size = 40 
    draw.text(img.width/2, 40+(i*60),artext) 
    print draw.get_font_metrics(img,artext) 
    draw(img) 
draw.text(img.width/2, 40+((i+1)*60),u'ناصر test') 
draw(img) 
img.save(filename='C:\\PATH\\OUTPUT\\arabictest.png'.format(r)) 
wdiplay(img) 

Arabic typography in images

İlgili konular