使用Python实现产品图片自动化处理

这篇具有很好参考价值的文章主要介绍了使用Python实现产品图片自动化处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

大家好,在当今的数字化时代,产品图片在电子商务和市场营销中发挥着至关重要的作用。然而,为在线平台准备产品图片可能是一项耗时的任务,本文将分享一个Python脚本,用于自动化产品图片的图像处理工作流程。通过使用Python Imaging Library(PIL)rembg库,可以实现删除图片背景,裁剪图片以适应产品尺寸,调整图片大小,并创建具有特定大小和颜色的新画布。

脚本概述

今天本文要讨论的脚本遵循以下步骤:

  1. 使用rembg库删除图片背景。

  2. 裁剪图片,仅包含产品尺寸。

  3. 调整裁剪后的图片到指定的大小,同时保持宽高比。

  4. 创建具有指定大小和颜色的新画布。

  5. 将调整大小后的产品图片粘贴到新画布上。

安装和使用

要运行脚本,需要安装PIL(Pillow)库和rembg库。你可以使用pip安装它们:

pip install pillow rembg

要使用该脚本,请按照以下步骤操作:

  1. 将你的产品图片放置在指定的文件夹和子文件夹中。

  2. 在脚本中更新folder_dir变量,以使其指向包含你的产品图片的文件夹。

  3. 使用Python解释器运行脚本。

脚本将处理文件夹及其子文件夹中的所有产品图片,应用前面提到的图像处理步骤。处理后的图像将进行保存,并在原始文件名后附加“_Processed”后缀。

函数解释

append_id(filename)

def append_id(filename):
    p = Path(filename)
    return "{0}_{2}{1}".format(Path.joinpath(p.parent, p.stem), ".png", "Processed")

此函数会在输出图像文件名附加一个ID。它以原始文件名作为输入,并返回附加了“_Processed”后缀的修改后的文件名。这有助于区分处理后的图像和原始图像。

autocrop_image(img, border=0)

def autocrop_image(img, border=0):
    bbox = img.getbbox()
    img = img.crop(bbox)
    (scale, height) = img.size
    scale += border * 2
    height += border * 2
    cropped_image = Image.new("RGBA", (scale, height), (0, 0, 0, 0))
    cropped_image.paste(img, (border, border))
    return cropped_image

此函数通过删除任何不必要的空白或背景来自动裁剪图像,它接受一个输入图像img和一个可选border参数(默认为0),该参数用于在裁剪后的图像周围添加额外的填充。其使用img.getbbox()计算图像的边界框,将图像裁剪为边界框的内容,然后创建一个适当大小的新图像以容纳裁剪后的图像和边框,最后将裁剪后的图像粘贴到新图像上,并返回裁剪后的图像结果。

resize_image(img, myScale)

def resize_image(img, myScale):
    img_width, img_height = img.size

    if img_height > img_width:
        hpercent = (myScale/float(img_height))
        wsize = int((float(img_width)*float(hpercent)))
        resized_img = img.resize((wsize, myScale), Image.Resampling.LANCZOS)

    if img_width > img_height:
        wpercent = (myScale/float(img_width))
        hsize = int((float(img_height)*float(wpercent)))
        resized_img = img.resize((myScale, hsize), Image.Resampling.LANCZOS)

    return resized_img

此函数可在保持宽高比的同时缩放图像,接受输入图像img和所需缩放比例myScale。首先函数根据比较图像的高度和宽度来确定图像是纵向还是横向,然后使用所需的比例计算出相应的调整大小的尺寸,最后使用img.resize()根据计算出的尺寸调整图像大小,并返回调整大小后的图像。

resize_canvas(img, canvas_width, canvas_height)

def resize_canvas(img, canvas_width, canvas_height):
    old_width, old_height = img.size
    x1 = int(math.floor((canvas_width - old_width) / 2))
    y1 = int(math.floor((canvas_height - old_height) / 2))
    mode = img.mode
    if len(mode) == 1:
        new_background = (255)
    if len(mode) == 3:
        new_background = (255, 255, 255)
    if len(mode) == 4:
        new_background = (255, 255, 255, 255)
    newImage = Image.new(mode, (canvas_width, canvas_height), new_background)
    newImage.alpha_composite(
        img, ((canvas_width - old_width) // 2, (canvas_height - old_height) // 2))
    return newImage

此函数可调整画布大小并将图像放置于其中,它接受输入图像img、画布宽度canvas_width和画布高度canvas_height。该函数根据画布尺寸与图像尺寸之间的差异,计算出将图像居中放置于画布上所需的位置,然后创建一个具有指定画布尺寸和根据图像模式确定的适当背景色的新图像。最后在计算出的位置将输入图像粘贴到新图像上,并返回调整画布尺寸后的图像。

process_files(folder_dir)

def process_files(folder_dir):
    for entry in os.scandir(folder_dir):
        if entry.is_file() and entry.name.lower().endswith(image_extensions):
            image_path = entry.path
            img = Image.open(image_path)
            output_path = append_id(image_path)
            removedBGimage = remove(img, True)
            croppedImage = autocrop_image(removedBGimage, 0)
            resizedImage = resize_image(croppedImage, 700)
            combinedImage = resize_canvas(resizedImage, 1000, 1000)
            combinedImage.save(output_path)
        elif entry.is_dir():
            process_files(entry.path)

此函数可处理指定文件夹及其子文件夹中的文件,以folder_dir作为输入,函数使用os.scandir()迭代遍历文件夹中的每个条目。如果条目是一个文件并且具有受支持的图像扩展名,它使用Image.open()打开该图像,然后通过调用append_id()函数生成输出路径,使用rembg库中的remove()函数删除图像背景,自动裁剪图像,调整图像大小,创建新画布,并将处理后的图像保存到输出路径。如果条目是一个目录,则它递归调用process_files()函数以处理子目录中的文件。

本文探讨了一个Python脚本,用于自动化产品图片的图像处理。通过充分利用PILrembg的功能,可以删除图像背景、裁剪图像、调整图像大小并创建新画布,以获得精美和专业的外观。通过自动化这一工作流程,可以节省准备产品图片用于各种电子商务和市场营销平台的时间和精力。文章来源地址https://www.toymoban.com/news/detail-603012.html

到了这里,关于使用Python实现产品图片自动化处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用【Python+Appium】实现自动化测试

    一、环境准备 1.脚本语言:Python3.x    IDE:安装Pycharm 2.安装Java JDK 、Android SDK 3.adb环境,path添加E:SoftwareAndroid_SDKplatform-tools 4.安装Appium for windows,官网地址 Redirecting  点击下载按钮会到GitHub的下载页面,选择对应平台下载   安装完成后,启动Appium,host和port默认的即可,然

    2024年02月08日
    浏览(46)
  • 如何使用Python实现FPGA编程“自动化”

    之前读到过一个公众号文章,写了关于《使用Python实现Vivado和Modelsim仿真的自动化》,连接https://mp.weixin.qq.com/s/2YR_LjpQNtJr9beqnCz7CA。根据该文章,基于自己的编程习惯和工作需要,我做了一些修改和便于自己编程的一些python代码,这里和大家介绍一下。 对于生成的tb文件使用了

    2023年04月14日
    浏览(38)
  • Python+Appium实现自动化测试的使用步骤

    这篇文章主要介绍了Python+Appium实现自动化测试的使用步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 1.脚本语言:Python3.x IDE:安装Pycharm 2.安装Java JDK 、Android SDK 3.adb环境,path添加E:

    2024年02月03日
    浏览(38)
  • Python使用HTTP代理实现网络请求的自动化

    随着网络技术的发展,网络请求成为了许多应用的重要组成部分。然而,手动发送网络请求不仅效率低下,而且容易出错。为了解决这个问题,我们可以使用Python来实现网络请求的自动化。而HTTP代理可以帮助我们更好地控制和管理这些请求。 在Python中,有许多库可以用来发

    2024年01月19日
    浏览(46)
  • 使用Python+selenium实现第一个自动化测试脚本

    这篇文章主要介绍了使用Python+selenium实现第一个自动化测试脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 最近在学web自动化,记录一下学习过程。 此处我选用python3.6+selenium3.0,均用

    2024年02月03日
    浏览(56)
  • Python Selenium实现自动化测试及Chrome驱动使用!

    本文将介绍如何使用Python Selenium库实现自动化测试,并详细记录了Chrome驱动的使用方法。 通过本文的指导,读者将能够快速上手使用Python Selenium进行自动化测试。 并了解如何配置和使用Chrome驱动来实现更高效的自动化测试。 一、Python Selenium简介 Python Selenium是一个用于Web应用

    2024年03月10日
    浏览(65)
  • Python Selenium实现自动化测试及Chrome驱动使用

    本文将介绍如何使用 Python   Selenium 库实现 自动化测试 ,并详细 记录 了Chrome驱动的使用方法。 通过本文的指导,读者将能够快速上手使用Python Selenium进行自动化测试。 并了解如何配置和使用Chrome驱动来实现更高效的自动化测试。 一、Python Selenium简介 Python Selenium是一个用于

    2024年02月03日
    浏览(60)
  • Python+TinyPNG熊猫网站自动化的压缩图片

    前言 本篇在讲什么 Python+TinyPNG自动化处理图片 本篇需要什么 对 Python 语法有简单认知 依赖 Python2.7 环境 依赖 TinyPNG 工具 本篇的特色 具有全流程的 图文教学 重实践,轻理论,快速上手 提供全流程的 源码 内容 ★提高阅读体验★ 👉 ♣ 三级标题 👈 👉 ♦ 四级标题 👈 Tin

    2024年02月11日
    浏览(35)
  • Python+Selenium+Pytest+Allure自动化测试框架实战实例(示例为我司网盘产品)

    应公司要求,组织员工培训自动化测试,所以也趁此机会把我所学习的自动化框架整理一下,虽说不是很完美,但也有所收获。 序号 库、插件、工具 版本号 1 Python 3.11 2 Pycharm 22.2.3 3 pytest 7.2.0 4 pywin32 305 5 selenium3 4.6.0 6 openpyxl 3.0.10 7 Chromedriver 与当前浏览器版本对应即可 8 al

    2023年04月16日
    浏览(97)
  • Python文件自动化处理

    Python标准库 和操作系统有关的操作 创建、移动、复制文件和文件夹 文件路径和名称处理 路径的操作 获取当前Python程序运行路径 不同操作系统之间路径的表示方式  windows中采用反斜杠()作为文件夹之间的分隔符  Mac和Linux中采用斜杠(/)作为文件夹之间的分隔符 把文件夹里面

    2024年01月17日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包