【问题标题】:'str' object has no attribute 'paste'“str”对象没有“粘贴”属性
【发布时间】:2022-01-24 03:01:42
【问题描述】:

我正在编写获取不同图像并覆盖它们的代码。我在网上得到了这段代码,我正在尝试将其更改为我想做的工作,但是当我运行它时,我得到了这个:

发生异常:AttributeError “str”对象没有“粘贴”属性

我是 python 新手,所以我很难弄清楚这有什么问题。任何帮助将不胜感激。

import random
import os

from PIL import Image

#overlaying
background.paste(jacket, (0,0), mask = jacket)
background.show()

background变码:

background_path = r"C:/Users/cspea/Desktop/background/"
background = random.choice([
    x for x in os.listdir(background_path)
    if os.path.isfile(os.path.join(background_path,x))
])

jacket变码:

jacket_path = r"C:/Users/cspea/Desktop/jackets/"
jacket = random.choice([
    x for x in os.listdir(jacket_path)
    if os.path.isfile(os.path.join(jacket_path,x))
])

出于安全考虑,我只粘贴了需要帮助的部分代码。上面代码中的所有变量都可以正常工作。当我在没有上面代码的情况下运行程序时,它可以完美运行。

【问题讨论】:

  • 你在哪里定义background
  • @PedroMaia 刚刚用信息更新了问题
  • backgroundjacket 只是包含路径名的字符串。您需要将这些文件加载​​到 PIL Images 中才能对它们进行任何操作。

标签: python image-processing


【解决方案1】:

问题是背景还不是图像。您需要执行以下操作。

from PIL import Image, ImageDraw, ImageFilter

background_img = Image.open(background)
jacket_img = Image.open(jacket)

background_img.paste(jacket_img, (0,0), mask = jacket_img)
background_img.show()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2016-09-20
    • 2019-03-25
    • 2017-05-13
    • 2014-04-28
    • 2015-05-15
    • 2019-06-20
    相关资源
    最近更新 更多