使用python拼接所有好友的头像

2018-07-12 分类:Python, 爬虫 阅读(499) 评论(4)

这篇博客介绍一下怎么用python把多张图片按比例缩小,拼成一张图片,比如说我要把我所有微信好友的头像,到一个图片里,如下图:


       咱们先不着急写代码,先分析下需求,把思路缕清,代码就好写了。

这个拼图片,就像咱们要做一个照片墙一样,做照片墙怎么做呢,假如说现在有一块640*640的一块正方形的墙壁。

那我正常做的话,怎么办,肯定要先有一块640*640的墙,算出来这个墙的面积,然后算出来有多少张照片,拿总的面积除以照片的数量,就算出来了每张照片的面积,裁剪好大小正好的照片,这样子就可以把照片都贴到这块墙上了。
     现在思路已经缕清了,咱们要注意上面几个需要运算的数据
                       1、墙的面积
                       2、照片的数量
                       3、每个照片的面积

       下面咱们就可以来写代码了,写代码之前思考一个问题,咱们自己贴照片的时候,一行一行开始贴,到这一行结束之后,第二行继续贴。但是程序是死的,他不可能有那么智能的,所以咱们要先计算出来每行能贴多少张照片,然后贴的时候判断一下,如果这一行已经贴满了,那么我就从第二行开始。
      那怎么算每行能贴多少照片呢,拿墙的长再除以每个照片的长度,就算出来了,所以还要计算出来每个照片的边长。
      咱们上面已经算出来了每个照片的面积了,正方形的面积等于边长的平方,所以对它进行开方就可以获取到边长了。
      ok,需要用来计算的数据都已经好了。重新看下,然后下面开始写代码
                       1、墙的面积
                       2、照片的数量
                       3、每个照片的面积
                       4、每个照片的边长
                       5、每行能够贴的照片数量

 

处理图片需要用到PIL模块,直接pip 安装即可。pip install pillow,安装可能会报错,如果报错,打开这个网站,https://www.lfd.uci.edu/~gohlke/pythonlibs/,搜索PIL,然后下载自己对应的版本,手动安装即可。

 

一定要缕清思路,然后好好看代码注释才能真正的理解它哦,我也是看了半天才弄明白,快去试试吧,下篇博客咱们写怎么获取到qq群里面的群成员的图片,然后生成所有人的头像拼图和所有群成员昵称的词云~

您可能也喜欢:

协程、gevent实现异步io、进程、线程、协程对比

异步io的说白了就是遇到io操作的时候,就停下来去做别的事情。io分网络io和磁盘io,网络io比如说打开一个网站获取数据,下载一首歌等等,磁盘io就是把数据存到一个文件里面,写到磁盘上。 从网站上获取数据或者把数据写到磁盘上都是需要时间的,那就得等待了,这样的话,很多任务的时候就比较慢了,而异步i...

more

迭代器、生成器

迭代器只有在调用next的时候才会取数据(所以省内存),或者循环的时候,一个对象里面实现了__iter__方法,iter方法里面返回了一个迭代器,那就是一个可迭代对象了。 下面的代码,首先实现了iter方法,这个对象就是一个可迭代对象了,然后又返回了self就是自己,就是一个迭代器了。 使用for ...

more

socket、tcp/ip协议、udp协议

socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】【读写】【关闭】模式来操作。socket就是该模式的一个实现,...

more

评论&留言
欢迎新朋友你的到来!
已经有4 条评论抢在你前面了~
昵称

  1. hua

    发现自己的了

    #1
    回复
  2. biubiubiu

    哈哈哈哈看到我头像了

    #2
    回复
  3. 解开封印的小道士

    牛牛牛
    六六六

    #3
    回复
  4. 土豆

    好玩

    #4
    回复

登录

忘记密码 ?

切换登录

注册