最近学习了 python 的图形处理库 PIL,深刻体会到 python 的强大。就图片的简单处理,如高亮、旋转、resize 等操作,特别是对图片的批量处理,python 较 photoshop 等图片处理工具要来的更容易、更方便。
安装 PIL 库后,根据自己的需求阅读 PIL 库的使用手册。下面是我在使用该 lib 时,遇到的一些问题和感悟。
需求:在图片右上方添加如手机 App 上消息提醒的数字。
具体实现代码如下:
#!/usr/bin/python import os, sys from PIL import Image from PIL import ImageFont from PIL import ImageDraw def main(): img = Image.open("thumb.png") fontsize = img.size[1] / 16 x = img.size[0] - fontsize draw = ImageDraw.Draw(img) font = ImageFont.truetype("/usr/share/fonts/truetype/msttcorefonts/arial.ttf", fontsize) draw.text((x, 0), "9", font=font, fill="red") del draw img.save("result.png") img.show() if __name__== '__main__': main()
分析:
1. 坐标 (0, 0) 表示左上角,整个图片类似镶嵌在坐标的第四像限;img.size 是一个二位数组,依次位图片的宽和高。
2. 在图片上添加内容时注意对应内容也会占位置,所以不能当作点即 pixel 来看待,实际处理时需要考虑添加对象的 size,这就对应代码中右上角坐标 x 的获取。
3. ImageFont 的获取有很多方法,其中较简单的方法从 truetype 中获取,对应 font 存放的位置一般是 /usr/share/fonts/...