正如 comments 中所说,它是由anti-aliasing引起的,你可以像这样 Select 要不要:
#!/usr/bin/env python3
from PIL import Image, ImageDraw, ImageFont
# Create empty black image and get drawing context to it
im = Image.new('RGB', (600,300), 'black')
dctx = ImageDraw.Draw(im)
# Load a TrueType font, antialiasing is enabled by default
font = ImageFont.truetype("/System/Library/Fonts/Supplemental/Academy Engraved LET Fonts.ttf", size=64)
# Disable antialiasing
dctx.fontmode="1"
dctx.text((20,60),"Without antialias", font=font, fill="white")
nColours = len(im.getcolors())
print(f'Without antialising: {nColours=}')
# Enable antialiasing
dctx.fontmode="L"
dctx.text((20,160),"With antialias", font=font, fill="white")
nColours = len(im.getcolors())
print(f'With antialising: {nColours=}')
# Save result
im.save('result.png')
Output个
Without antialising: nColours=2
With antialising: nColours=255
在清晰度方面,你会注意到它在抗锯齿的情况下更流畅、更容易阅读(只要看看最初的W
,看看没有抗锯齿的情况有多参差不齐),但这也会给图像引入更多的 colored颜色 /灰色阴影,这有时可能是不受欢迎的.
下面是一个特写: