dethering في النص باستخدام خطوط PIL و TrueType
-
20-09-2019 - |
سؤال
النظر في التعليمات البرمجية التالية: من صورة استيراد PIS، Imagedraw، ImageFont
def addText(img, lTxt):
FONT_SIZE = 10
INTERLINE_DISTANCE = FONT_SIZE + 1
font = ImageFont.truetype('arial.ttf', FONT_SIZE)
lTxtImageHeight = INTERLINE_DISTANCE * len(lTxt)
# create text image
lTxtImg = Image.new('RGBA', (img.size[1], lTxtImageHeight), 255)
lTxtImgDraw = ImageDraw.Draw(lTxtImg, )
for (i, line) in enumerate(lTxt):
lTxtImgDraw.text((5, i * INTERLINE_DISTANCE), line, font=font, fill='#000000')
# rotate text image
lTxtImg = lTxtImg.rotate(90)
# create new transparent image ret
ret = Image.new('RGBA', (img.size[0] + lTxtImageHeight, img.size[1]), 255)
# paste the image to ret
ret.paste(img, (0,0))
# paste the text to ret
ret.paste(lTxtImg, (img.size[0], 0), lTxtImg)
return ret
img = Image.open('in.png')
addText(img, ['lorem', 'ipsum', 'dolores']).save('out.png')
فيما يلي المدخلات وملفات الإخراج هذا هو المدخلات
الإدخال http://img16.imageshack.us/img16/8229/73936270.png.
وهذا هو الإخراج
الإخراج http://img94.imageshack.us/img94/531/ATJ.PNG.
كما قد ترى، تحتوي صورة الإخراج على الكثير من الضوضاء المحمر حول النص. كيف يمكنني القضاء على هذا النزول؟
المحلول
أقترح كتابة الصور النصية المتوسطة لملف (النص، ثم النص المستورم)، لعزل حيث تظهر المصنوعات اليدوية أولا.
يمكن أن يكون أحد الاحتمالات الأخرى هو أن ترميز PNG يستخدم Pallete بدون قيم رمادية، لذلك هذه الحمر هي الأقرب. راجعت ترميز الملفات على Imageshack على الرغم من ذلك، ويبدو أنه بخير، لذلك لا أعتقد أن هذه هي المشكلة.
لا تنتمي إلى StackOverflow