[英]Dithering in text using PIL and truetype fonts
考虑以下代码:从PIL导入Image,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/outj.png
您可能会看到,输出图像在文本周围包含许多微红色的噪点。 如何消除这种抖动?
我建议将中间文本图像写入文件(文本,然后是旋转的文本),以隔离文物首次出现的位置。
另一种可能是png编码正在使用没有灰度值的调色板,因此这些红色是最接近的可用颜色。 我检查了imageshack上文件的编码,看起来还可以,所以我认为这不是问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.