파이썬에서 PIL을 사용하여 이미지에 UTF-8 문자를 인쇄하는 코드가 있습니다.이미지에 보조 텍스트 인쇄
내가 아랍어와 같은 쌍방향 스크립트에 합류를 들어, 동일한 코드 문자를 올바르게 연결에 실패 것으로 나타났습니다
이사람이 방법을 추천 할 수 (초기 형태 만 선택 중간 및 최종 형태는 사용되지 않습니다 있습니다) 또는이 특정 문제를 해결하기위한 기술? 당신은 PIL을 계속 사용하려면
파이썬에서 PIL을 사용하여 이미지에 UTF-8 문자를 인쇄하는 코드가 있습니다.이미지에 보조 텍스트 인쇄
내가 아랍어와 같은 쌍방향 스크립트에 합류를 들어, 동일한 코드 문자를 올바르게 연결에 실패 것으로 나타났습니다
이사람이 방법을 추천 할 수 (초기 형태 만 선택 중간 및 최종 형태는 사용되지 않습니다 있습니다) 또는이 특정 문제를 해결하기위한 기술? 당신은 PIL을 계속 사용하려면
, pybidi
와 pyarabicshaping
를 사용하거나 텍스트 형성을 위해 HarfBuzz
사용 pangocairo
로 전환하는 것이 좋습니다.
내가 한 것은 다음과 같습니다. Python + Wand (Python Lib) + arabic_retaper (Python Lib) + bidi.algorithme (Python Lib). 동일은 PIL 적용/베개, 당신은 사용해야하는 arabic_reshaper
및 bidi.algorithm
및 생성 된 텍스트를 통과 draw.text((10, 25), artext, font=font)
에 :
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)
난 그냥 자신의 웹 사이트에 잠깐 모습을 했어, 그리고 내 짐작으로는 도서관에 BIDI를 제대로 처리 할 능력이 없다는 것입니다. 광고를하는 경우 광고를하지 않습니다. –
[this] (http://pypi.python.org/pypi/python-bidi/)에 도움이 되었습니까? –