Python批量给店铺图片素材加Logo
【摘要】
现在打算将一篇店铺素材批量加logo后上传至电商平台,平台要求上传像素为800*800。
下面我们来一步步使用Python来实现:
测试
首先读取logo图片看看效果:
from PIL impo...
现在打算将一篇店铺素材批量加logo后上传至电商平台,平台要求上传像素为800*800。
下面我们来一步步使用Python来实现:
测试
首先读取logo图片看看效果:
from PIL import Image
logo = Image.open('logo2.png')
logo
- 1
- 2
- 3
读取后发现logo图片存在大量空白:
我们可以人工编辑图片删除空白,也可以通过程序来自动裁切。
测试一下裁切功能:
可以看到已经完美去掉的四周的空白。
任意读一张主图:
按照像素为800*800的要求,我们需要先对图片的大小进行调整。可以直接拉伸也可以先裁切再拉伸。
这是直接拉伸的效果:
或者先将图片裁切到长宽一致后,再调整像素为800*800:
可以看到两种处理方式各有千秋,我们可以编写成可以传参的函数,供用户使用。
整理最终代码如下:
批量加logo的完整代码
from PIL import Image, ImageChops
from pathlib import Path
import os
def crop_image(im):
'''裁剪图片边缘空白'''
bg = Image.new(mode='RGBA', size=im.size)
bbox = ImageChops.difference(im, bg).getbbox()
if bbox:
return im.crop(bbox)
return im
def img_append_logo(logo, src, dest, size=(800, 800), crop=True):
logo = crop_image(Image.open(logo))
l_w, l_h = logo.size
if not os.path.exists(dest):
os.makedirs(dest)
for file in Path(src).glob("*.jpg"):
im = Image.open(file)
if crop:
w, h = im.size
d = abs(w-h)/2
if w >= h:
im = im.crop((d, 0, w-d, h))
else:
im = im.crop((0, d, 0, h-d))
im = im.resize(size)
w_r = size[0]//4
new_h = l_h*w_r//l_w
im.paste(logo.resize((w_r, new_h)), (0, 0))
im.save(f"{dest}/{file.name}")
img_append_logo('logo2.png', "img_src", "result")
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
不裁切再运行一次看看效果:
img_append_logo('logo2.png', "img_src", "result2", crop=False)
- 1
文章来源: xxmdmst.blog.csdn.net,作者:小小明-代码实体,版权归原作者所有,如需转载,请联系作者。
原文链接:xxmdmst.blog.csdn.net/article/details/118370848
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)