以下,创建一个空白图片文件,在图片中写出文字并保存。

from PIL import ImageFont, ImageDraw, Image

strs = "国家"
font = ImageFont.truetype("simsun.ttc", 40)
im = Image.new('RGB', (200,200), (255,255,255))

draw = ImageDraw.Draw(im)
draw.text(xy=(70, 70), text= strs, font=font, fill='red')
im.save('1.jpg','JPEG')

1.jpg
可以明显观察到文字周边有毛边。可以通过以下方法改善图片质量,以下方法的参数只针对于保存为JPG/JPEG格式的图片的情况。
 

方法一:提高quality默认值

im.save('1.jpg','JPEG', quality=95)

2.jpg
quality 默认值为75。应避免高于95的值; 100禁用部分JPEG压缩算法,并导致大文件几乎没有任何图像质量增益。
可以观察到图片清晰度有提升,但不明显。
 

方法二:设置subsampling

im.save('3.jpg', 'JPEG', quality=95, subsampling=0)

3.jpg
subsampling 设置编码器的子采样

  • keep:仅对JPEG文件有效,将保留原始图像设置。
  • 4:4:44:2:24:2:0:特定的采样值
  • -1: 相当于 keep
  • 0: 相当于 4:4:4
  • 1: 相当于 4:2:2
  • 2: 相当于 4:2:0

 

以上三图对比:

清晰度对比.png
图片大小分别为:5kb, 9kb, 13kb

特别注意:以上方法的参数只针对于保存为JPG/JPEG格式的图片的情况
参考文档:https://pillow.readthedocs.io/en/5.1.x/handbook/image-file-formats.html#jpeg
参考文档:https://pillow.readthedocs.io/en/4.0.x/PIL.html
参考文档:https://stackoverflow.com/questions/4354543/determining-jpg-quality-in-python-pil