用python的图片处理库pillow给图片添加背景

场景

需要处理一批图片,使原本1:1的图片比例成为3:2。

解决方案的选择

原本打算使用photoshop批量处理,但是在下载图片时,用了python脚本,电脑也老了,用photoshop比较卡,索性就用python脚本来处理了。

具体方法

主要通过pillow库来处理,之前准备用PIL来处理,安装PIL库的时候才发现,PIL只支持到python2.7,而pillow库则是PIL的衍生版,甚至比PIL功能更全面,最终选择了pillow来处理。
具体的方法:

  1. 定义合并图片的函数;
    1. 读取背景图片;
    2. 读取要合并的图片;
    3. 找到要合并的图片在背景图片中的坐标位置,坐标从背景图片的左上开始,四个坐标表示左上右下。
    4. 将要合并的图片合并到背景图片上,必须与坐标一致才可以生效。
      5.保存图片
  2. 读取存有图片路径的文本文件,并通过函数处理,处理完成后关闭文件。

代码

合并图片代码

# -*- coding: utf-8 -*-
from PIL import Image
import os
def add_bg(x):
    base_img = Image.open('bg.jpg')
    box = (88, 0, 438, 350)
    tmp_img = Image.open(x)
    region = tmp_img
    base_img.paste(region, box)
    return  base_img.save(tmp_img.filename)

# img_list = os.listdir('img')
# f = open('img_path.txt','w')
# for i in img_list:
#   f.write('/Users/lanren/python/xinyi/img/' + i + '\n')
# f.close()

f = open('img_path.txt')
all_img_ptah = f.readlines()

for a in all_img_ptah:
    a = a.strip("\n")
    print(a)
    add_bg(a)
f.close()****

下载图片代码

# -*- coding: utf-8 -*-
import urllib.request

f = open("imgurl.txt")
urllist = f.readlines()
# print(urllist)

for item in urllist:
 item = item.strip('\n')
 imgname = item.rsplit('/', 1)[-1]
 urllib.request.urlretrieve(item,"/Users/lanren/python/xinyi/img/%s"%(imgname))

print("下载完成")
f.close()

读取图片文件路径并保存到文本的代码

# -*- coding: utf-8 -*-

f = open("imgurl.txt")
f1 = open("img_name.txt", 'w')
urllist = f.readlines()
# print(urllist)

for item in urllist:
 item = item.strip('\n')
 imgname = item.rsplit('/', 1)[-1]
 f1.write(imgname + "\n")

f.close()
f1.close()
暂无评论

请到【后台 - 用户 - 我的个人资料】中填写个人说明。

发表评论