I've managed to do fairly decent anti-aliased text from bitmap PIL fonts, even including colored text, as follows:
1) render the text at 2x the desired size (or 3x or 4x depending on how fine you want the anti-aliasing to be...). Render it in black on a plain white background of the correct size for the text only. 2) resize the text to the right size (using im.resize()), using bicubic interpolation (i.e. use the method = Image.BICUBIC arg to resize) 3) create a colored image the same size as the text - in the color you want the text to be in the final output. 4) paste the lot into the final image, using the text image as a mask. (i.e. final = original.paste(colorImage, (x, y), textMask) Resizing using BICUBIC will give the text anti-aliased edges as desired. Kevin. ----- Original Message ----- From: "Laszlo Zsolt Nagy" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Monday, September 19, 2005 10:42 AM Subject: [Image-SIG] Bad antialias? (in Python Imaging Library 1.1.5) > I create a fully transparent red image this way: > > size = (400,400) > img = Image.new('RGBA',size,(255,0,0,0)) > > Then I draw an (antialiased) text on it: > > drawer = ImageDraw.Draw(img) > font = ImageFont.truetype('arc.ttf',12) > drawer.text((0,0),"This text is 12pt",font=font,fill=(0,0,0,255)) > > This is what I get (image drawn on a gray background): > > http://mess.hu/download/bad_antialias.png > > Apparently, antialiasing will use a mixture of the background color and > the text color on the edges. > I think this is good only if the background is fully opaque. Is there a > workaround? > > Is this a PIL bug or a feature? > > Thanks, > > Les > > > _______________________________________________ > Image-SIG maillist - [email protected] > http://mail.python.org/mailman/listinfo/image-sig > > > _______________________________________________ Image-SIG maillist - [email protected] http://mail.python.org/mailman/listinfo/image-sig
