美文网首页
2018-03-01用PIL拼接背景墙

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

作者: kunkun_1230 | 来源:发表于2018-03-02 10:17 被阅读0次
推荐的前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 = []

相关文章

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

    之前做ppt的时候,一直想做这种图,但是一直没有找到合适的图片处理软件可以做,正好最近接触PIL包,那么就用PIL...

  • baidu

    图像简单处理(PIL or Pillow) Python拼接图片 ''' --coding:utf-8-- imp...

  • Python-PIL-拼接图片

    最近学习了PIL,主要学习的是如何把当前目录下的图片拼接在一起,以下仅仅是拼接图片的学习笔记: 一、学习的网址: ...

  • Pytorch数据前后处理整理

    1. PIL Image   通常, pytorch处理数据集用的是PIL Image的库, 通过PIL Imag...

  • 用python的PIL库轻松拼接一百张照片

    多图预警,请在wifi下观看。 和大家分享下之前用python的第三方库PIL库进行多图拼接制作的一些漂亮的照片墙...

  • 验证码

    用PIL生成验证码 check_code.py import random, string from PIL im...

  • 半成品也很美

    126平全屋木纹地砖,阳台六角砖和木纹砖花样拼接,背景墙文化砖木饰面拼接,整体风格很有特色,半成品就很美了,期待完...

  • 2019-03-25

    126平全屋木纹地砖,阳台六角砖和木纹砖花样拼接,背景墙文化砖木饰面拼接,整体风格很有特色,半成品就很美了,期待完...

  • 利用python PIL库转换图片格式

    首先要安装有PIL包,安装命令:pip install pillow直接用PIL.Image.open函数读取图片...

  • PIL引入图像

    用PIL引入图像,一直忘怎么写 PIL与Numpy数组之间互换也是门大学问,下次再看。

网友评论

      本文标题:2018-03-01用PIL拼接背景墙

      本文链接:https://www.haomeiwen.com/subject/zqinxftx.html