1000张图片如何拼接
2017-02-09 本文已影响3370人
向右奔跑
1000张+图片怎样拼接在一起,当然不能靠PS,也不能用美图秀秀,必须是编程来实现,而且一定要用Python。
用的是第三方库 PIL , 官方文档 http://effbot.org/imagingbook/
The Python Imaging Library (PIL) adds image processing capabilities to your Python interpreter. This library supports many file formats, and provides powerful image processing and graphics capabilities.
PIL已经是Python平台事实上的图像处理标准库。PIL功能强大,简单易用。
Image 类是 PIL 库中一个非常重要的类,通过这个类来创建实例可以有直接载入图像文件,读取处理过的图像。
还是看看我要实现的N张图片的拼接,怎么做?
基本的操作就是创建一张图片,把要拼接的图片读取进来,顺序贴(paste)到创建的这张图中。
以下是Image类几个最常用的方法。
new('RGBA', (x,y))
创建一张图片,默认是黑色的。可以修改参数。
image = Image.new('RGB', (width, height), (255, 255, 255))
open(filename) , save(outfilename)
open(filename) 打开一个图片文件把图片读进来。save(outfilename)保存图片。
resize(size,size)
调整图片大小(缩放图片)。近2000张图片,先要缩小一下。
paste(fromImage,where)
把图片贴进来,坐标系,左上角是(0,0)
完整代码:
# -*- coding:utf-8 -*-
# 图片拼接
import PIL.Image as Image
import os, sys
mw = 133 # 图片大小+图片间隔
ms = 5
msize = mw * ms
fpre = "x" #图片前缀
toImage = Image.new('RGBA', (msize, msize))
for y in range(1, 6): ## 先试一下 拼一个5*5 的图片
for x in range(1, 6):
# 之前保存的图片是顺序命名的,x_1.jpg, x_2.jpg ...
fname = "x_%s.jpg" % (ms*(y-1)+x)
fromImage = Image.open(fname)
#fromImage =fromImage.resize((mw, mw), Image.ANTIALIAS) # 先拼的图片不多,不用缩小
toImage.paste(fromImage, ((x-1) * mw, (y-1) * mw))
toImage.save('/Users/apple/Desktop/toimg/toImage_0.jpg')
为了防止密集恐怖,我随(jing)机(xin)选了25张来拼接。你们看看我的朋友圈颜值如何。
PS: 你一定好奇,这些图片是怎么来的,当然不是一张一张手动保存下来。对,是Python爬虫。还有什么有趣的微信朋友圈数据,敬请期待。