Il Dithering in testo utilizzando il PIL e i tipi di carattere truetype
-
20-09-2019 - |
Domanda
Si consideri il seguente codice:dal PIL importare Immagini, 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')
Qui sono l'input e l'output dei file Questo è l'ingresso
ingresso http://img16.imageshack.us/img16/8229/73936270.png
e questo è il risultato
uscita http://img94.imageshack.us/img94/531/outj.png
Come si può vedere, l'immagine di output contiene un sacco di rossastro rumore intorno al testo.Come posso eliminare questo il dithering?
Soluzione
Suggerisco di scrivere intermedio le immagini di testo in un file (di testo, quindi il testo ruotato), per isolare i reperti appaiono.
Un'altra possibilità potrebbe essere che il png codifica utilizza una tavolozza senza valori in scala di grigio, in modo che quelli rossi sono i più vicini a disposizione.Ho controllato la codifica del file su imageshack, però, e mi sembrava ok, quindi non credo che questo è il problema.