Python批量给店铺图片素材加Logo

举报
小小明-代码实体 发表于 2021/10/11 23:18:22 2021/10/11
【摘要】 现在打算将一篇店铺素材批量加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图片存在大量空白:

image-20210630211457319

我们可以人工编辑图片删除空白,也可以通过程序来自动裁切。

测试一下裁切功能:

image-20210630212505620

可以看到已经完美去掉的四周的空白。

任意读一张主图:

image-20210630211949382

按照像素为800*800的要求,我们需要先对图片的大小进行调整。可以直接拉伸也可以先裁切再拉伸。

这是直接拉伸的效果:

image-20210630212948598

或者先将图片裁切到长宽一致后,再调整像素为800*800:

image-20210630214453427

可以看到两种处理方式各有千秋,我们可以编写成可以传参的函数,供用户使用。

整理最终代码如下:

批量加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

image-20210630220649944

不裁切再运行一次看看效果:

img_append_logo('logo2.png', "img_src", "result2", crop=False)

  
 
  • 1

image-20210630221207954

文章来源: xxmdmst.blog.csdn.net,作者:小小明-代码实体,版权归原作者所有,如需转载,请联系作者。

原文链接:xxmdmst.blog.csdn.net/article/details/118370848

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。