Python Imaging Library 图片拼接
好多人可能见过如下图的图片,将几百张图片合成一张。前几天在上班的地铁上看到一张将所有好友微信头像合成一张大图的朋友圈图,我也想折腾一下,第一个想起的工具是Python咯。
PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了,PIL功能非常强大。
图片准备
话不多数,直接上代码。
上代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| import PIL.Image as Image import os import math pathList = [] headImgPath = '/Users/liangtianhua/Desktop/images/' for item in os.listdir(headImgPath): imgPath = os.path.join(headImgPath, item) pathList.append(imgPath) total = len(pathList) print('文件夹中一共有 ',total,' 张照片') line = int(math.sqrt(total)) + 1 NewImage = Image.new('RGB', (128*line,128*line)) x = y = 0 for item in pathList: try: img = Image.open(item) img = img.resize((128,128),Image.ANTIALIAS) NewImage.paste(img, (x * 128 , y * 128)) x += 1 except IOError: print('第%d行,%d列文件读取失败!IOError:%s' % (y,x,item)) print('试试在你的mac终端运行:sudo find ./ -name ".DS_Store" -depth -exec rm {} \;') x -= 1 if x == line: x = 0 y += 1 NewImage.save("Final.jpg") print('照片输出完毕!')
|
图片输出
PIL扩展
PIL 更多使用技巧可以参考廖雪峰的官方网站学python
以及官方API手册 Python Imaging Library Handbook