IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    python PIL 图片处理库

    OO~发表于 2015-01-12 14:19:09
    love 0

    最近学习了 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/...



沪ICP备19023445号-2号
友情链接