El difuminado en texto usando fuentes TrueType y PIL
-
20-09-2019 - |
Pregunta
Considere el siguiente código: PIL de importación de imágenes, 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')
Aquí son la entrada y la salida de archivos Esta es la entrada
de entrada http://img16.imageshack.us/img16/8229/73936270. png
y esta es la salida
de salida http://img94.imageshack.us/img94/531/outj. png
Como se puede ver, la imagen de salida contiene una gran cantidad de ruido de color rojizo alrededor del texto. ¿Cómo puedo eliminar este tramado?
Solución
Sugiero escribir las imágenes de texto para presentar intermedios (el texto, a continuación, el texto girado), para aislar, donde aparecen por primera vez los artefactos.
Otra posibilidad podría ser que la codificación PNG está utilizando una paleta sin valores de escala de grises, por lo que los rojos son los más cercanos disponibles. Revisé la codificación de los archivos en ImageShack embargo, y parecía que estaba bien, así que no creo que este es el problema.