2018-03-01用PIL拼接背景墙

推荐的前160位作者背景墙

之前做ppt的时候,一直想做这种图,但是一直没有找到合适的图片处理软件可以做,正好最近接触PIL包,那么就用PIL来写个代码实现以下吧!

生成背景墙的,还是按照三步走的策略:下载图片、更改图片为统一尺寸(不是裁剪!不是裁剪!不是裁剪!)、生成背景墙。

1.下载图片

with open('.\src.txt','r',encoding='utf-8') as f:

    i=1

    for each in f:

        urllib.request.urlretrieve(('https:'+each),(str(i)+ ".jpg"))

        i+=1

        print(i)

        time.sleep(random.choice(range(1,3)))

2.更改图片尺寸

观察下载后的头像图片,会发现每个头像的大小和尺寸不一致。这样子,如果直接做背景墙的话,会提示image do not match的错误。因此在进行制作背景墙之前,需要把所有的图片更改成统一的尺寸。并保证所有的头像图片存放在path路径下面的一个文件夹下面,并且最好此path路径下只有一个文件夹。

path = "E:/数据学习资料/自己做的小项目/爬取简书推荐作者/src/"

dirlist = []

for root, dirs, files in os.walk(path):

     for dir in dirs :

           dirlist.append(dir)

print(dirlist)  #看路径下有几个文件夹

for dir in dirlist:

    images = [] # images in each folder

    for root, dirs, files in os.walk(path+dir): # traverse each folder

        print(path+dir+'')

        i=1

        for file in files: #遍历文件夹中的每一个文件

            print(file)

            images.append(Image.open(path+dir+'/'+file))

            im=Image.open(path+dir+'/'+file)

            im=im.convert('RGBA')

            width, height = im.size

            width=100 #修改图片的宽度

            height=100 #修改图片的高度

            resizedim=im.resize((width,height)) #修改图片的尺寸

            name=path+str(i)+'.jpg' #定义图片名称

            resizedim.save(name) #保存图片

            i+=1

3.生成背景墙

按照下面这个代码里面进行相应的参数修改,运行之后就能在path路径下找到生成的图片了。

import os

from PIL import Image

UNIT_SIZE = 100 # the size of image 根据实际情况修改

def pinjie(images,num):

    target = Image.new('RGB', (UNIT_SIZE*20, UNIT_SIZE*8))  # result is 80*2 根据实际情况修改

    for j in range(1,9):  #这里选择的是8列,因此是1-9,其他情况可以看着修改成1-n

        n=20*(j-1) #因为是20张图片一行,所以是20,换成别的数字需要修改

        m=20*j

        for i in range(n,m):

            left=UNIT_SIZE*(i-n)

            upper=UNIT_SIZE*(j-1)

#          right=left+UNIT_SIZE #左上有了,右下可以不写

#          lower=upper+UNIT_SIZE

            target.paste(images[i], (left,upper))

    quality_value = 100

    target.save(path+dirlist[num]+'.jpg', quality = quality_value)

path = "E:/数据学习资料/自己做的小项目/爬取简书推荐作者/src/"

dirlist = [] # all dir name

for root, dirs, files in os.walk(path):   

    for dir in dirs :

        dirlist.append(dir) #找到path下所有的文件名,最好只有一个

num = 0

for dir in dirlist:

    images = [] # images in each folder

    for root, dirs, files in os.walk(path+dir): # traverse each folder

        print(path+dir+'')

        for file in files:

            images.append(Image.open(path+dir+'/'+file)) #注意这个地方,images里面不是直接添加图片地址,而是先打开,避免了转义的发生

    pinjie(images,num) #加这个num是连续生成多张图片的意思

    num +=1

    print(num)

    images = []

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 每个人都生活在人群之中,有人的地方,就免不了对话。生活中80%都是日常对话(甚至更多),20%则是关键对话,而对这...
    羽扇纶巾_Q酱阅读 1,612评论 0 0
  • 2018年的第一天,我想谈谈过去的2017,开启我的2018。2017,实现我的出国梦,和男朋友订婚,通过科二,取...
    每天的柠檬阅读 3,043评论 1 3
  • 【前幕】 转瞬仲夏,天气愈加炎热。浮生楼近日生意惨淡,除了零零星星的几个小打小闹的愿望,再无其他特别。都是些儿女情...
    梁暔阅读 3,587评论 0 7
  • 2月 琳琳寒假计划如下 奥数一年级每天做四周 口算心算前100练习册做完,高小的20内复习表测试 钢琴复习加预习 ...
    时光简记阅读 1,202评论 0 0
  • 星期六,阳光明媚,小姐姐个和小弟弟约好去公园玩,他们玩着玩着,小弟弟突然看见草坪上飞来一只小蝴蝶,小弟弟...
    爱自己最快乐阅读 1,747评论 0 5

友情链接更多精彩内容