То есть: Блокнот открыт, шрифт выбран как «Arial, размер 11», слова «это просто тест» тщательно введены, снимок экрана:
оригинал http://i53.tinypic.com/200skuv.png
Введен и запущен следующий код Python:
import ImageFont, ImageDraw, Image
im = Image.open("c:/textimg.png") #the above image
pilfont = ImageFont.truetype("arial.ttf", 11)
compimg = Image.new("RGB", im.size, (255, 255, 255))
draw = ImageDraw.Draw(compimg)
draw.text((0,0), "this is just a test", (0,0,0), font=pilfont)
compimg.save("c:/compimg.png")
И все же результат неутешительно отличается:
sad http://i56.tinypic.com/9h7x55.png
Мало того, что это неправильноразмер, но он также слегка затенен, в то время как рендеринг блокнота четкий и не пересекает границы пикселей.
Как я могу заставить его рендерить, как это делает блокнот?У меня тоже была эта проблема с pygame, так что я думаю, что мне здесь не хватает фундаментального понимания о TTF.
ОБНОВЛЕНИЕ: Я попробовал это снова с pygame.Это делает то же самое.У него есть возможность отключить сглаживание, но похоже, что он просто обрезает любые пиксели, которые он будет сглаживать, основываясь на некотором пороге.Самое близкое приближение, которое я получил, использовало размер 15. Код был:
pygfont = pygame.font.Font(r"c:\windows\fonts\arial.ttf", 15)
surf = pygfont.render("this is just a test", False, (0,0,0), (255,255,255))
pygame.image.save(surf, r"c:\pygameimg.png")
и результат (оригинал блокнота сверху для сравнения):
KILL ME http://i56.tinypic.com/2r26mbs.png
Гах, почему я не могу сразу предложить вознаграждение?
ОБНОВЛЕНИЕ: здесь сравниваются все методы:
AIFEOIFEF http://i56.tinypic.com/51ybtg.png
PIL 15, затем блокнот 11, затем pygame 15 - отключение псевдонима, затем pygame 15 - отключение псевдонима.
PIL 15 на самом деле имеет правильные пропорции, это просто сглаживание.итак: почему 15 против 11?Как заставить это сделать так же, как Windows?(и что делает Pygame?)