मुझे पीआईएल के ImageDraw मॉड्यूल, विशेष रूप से Draw.textsize
विधि के साथ कोई समस्या है। इस विधि को एक स्ट्रिंग और फ़ॉन्ट लेना चाहिए, और उस फ़ॉन्ट में रेंडर होने पर चौड़ाई और ऊंचाई को वापस लेना चाहिए। ऐसा लगता है कि यह ऊंचाई पर कम बाध्य है, हालांकि: मैं 43
से कम कुछ भी वापस करने के लिए इसे मनाने के लिए मना नहीं कर सकता। यहाँ एक उदाहरण (link) को दिखाने के लिए कि मैं क्या (बाउंडिंग लौटे चौड़ाई & ऊंचाई पर आधारित पाठ जिसके चारों ओर बक्से) पर देख रहा हूँ, और यहाँ कोड है कि यह उत्पादन है:पीआईएल ImageDraw.textsize गलत ऊंचाई देता है
from PIL import Image, ImageDraw, ImageFont # PIL 1.1.7; Python 2.6.6
im = Image.open(r'C:\test\blank.png').convert('RGB')
draw = ImageDraw.Draw(im)
TEXTCOLOR = (0, 0, 0)
X = 10
Y = 3
for fontsize in xrange(8, 51):
# Other fonts behave the same way
font = ImageFont.truetype('Arial.ttf', fontsize)
text = 'Hello, World! Size %d' % fontsize
width, height = draw.textsize(text, font=font)
print 'Font size %d: %d x %d' % (fontsize, width, height)
bbox = [(X, Y), (X+width, Y+height)]
draw.rectangle(bbox, outline=TEXTCOLOR)
draw.text((X, Y), text, font=font, fill=TEXTCOLOR)
Y += height + 3
im.show()
एक बार फॉन्ट ऊपर हो जाता है आकार 38 के बारे में, बाउंडिंग बॉक्स इसे सही ढंग से मिलान करने के लिए फैला हुआ है, लेकिन इससे पहले, यह एक स्थिर 43
पर सेट है। सवाल यह है कि, क्या किसी को पता है कि ImageDraw इस तरह से क्यों व्यवहार कर रहा है, और क्या किसी को इसे ठीक करने के तरीके के बारे में पता है? मैं वर्तमान में निर्धारित करके समस्या के काम कर रहा हूँ:
width = min(width, fontsize+1)
... लेकिन यह है कि स्पष्ट रूप से सबसे मजबूत समाधान कभी तैयार नहीं है।
आप जिस पीआईएल मॉड्यूल का उपयोग कर रहे हैं उसे आपने कहाँ प्राप्त किया? जब मैं पाइथन 2.7.3 के तहत अपना कोड चलाने की कोशिश करता हूं तो मुझे 'आयात त्रुटि प्राप्त होती है: _imagingft सी मॉड्यूल स्थापित नहीं है' त्रुटि। – martineau
@ मार्टिनौ मुझे यकीन नहीं है कि मुझे मूल रूप से यह कहां मिला है (मुझे याद है कि यह गर्दन में दर्द होने के बावजूद दर्द है)। मेरे द्वारा उपयोग किए जाने वाले इंस्टॉलर को 'PIL-fork-1.1.7.win32-py2.6.exe' नाम दिया गया है, लेकिन अब ऑनलाइन कोई भाग्य नहीं ढूंढ रहा है। –
'आयात करने वाला' मैं सामना कर रहा हूं एक आम समस्या है, जिसे मैं हल करने की कोशिश कर रहा हूं। जब/अगर मैं करता हूं, तो मैं आपकी समस्या पर एक और नजर डालूंगा। – martineau