“模块”对象没有“绘制”属性是什么意思?我该如何解决它?

问题描述 投票:0回答:3

我是计算机编码新手。我们和Canopy合作做PYTHON,我们正在做图像修改。我有一个“模块”对象没有属性“绘制”错误,并且不知道如何修复它。我导入了以下内容:

import PIL
import os.path  
import PIL.ImageDraw            
import PIL
from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw

我尝试运行的代码是:

def round_corners_of_all_images(directory=None):
    """ Saves a modfied version of each image in directory.

    Uses current directory if no directory is specified. 
    Places images in subdirectory 'modified', creating it if it does not exist.
    New image files are of type PNG and have transparent rounded corners.
    """

    if directory == None:
        directory = os.getcwd() # Use working directory if unspecified

    # Create a new directory 'modified'
    new_directory = os.path.join(directory, 'modified')
    try:
        os.mkdir(new_directory)
    except OSError:
        pass # if the directory already exists, proceed  

    #load all the images
    image_list, file_list = get_images(directory)  

    #go through the images and save modified versions
    for n in range(len(image_list)):
        # Parse the filename
        filename, filetype = file_list[n].split('.')

        # drawing the text on the picture
        draw = ImageDraw.Draw(image_list[n])
        font = ImageFont.truetype("Infinite_Stroke",size=24,index=0,encoding="unic")
        draw.text((10, 25),(0,0,255),"SAMSUNG", font=font)

        # Round the corners with radius = 30% of short side
        new_image = round_corners(image_list[n],.30)
        #save the altered image, suing PNG to retain transparency
        new_image_filename = os.path.join(new_directory, filename + '.jpg')
        new_image.save(new_image_filename)    
python canopy image-editing image-editor
3个回答
1
投票

从文档看来,您正在寻找的方法是 Draw(),而不是 draw()

http://pillow.readthedocs.io/en/3.1.x/reference/ImageDraw.html

试试这个

draw = ImageDraw.Draw(image_list[n])

0
投票

老问题,但也许仍然相关的答案:这里的错误是在 ImageDraw 的双重导入中,通过以下方式重写导入解决了我的问题:

from PIL import ImageFont, ImageDraw

0
投票

在 site-packages\ultralytics\utils\plotting.py 中 基于第 121 行,即“self.draw = ImageDraw.Draw(self.im)”;您必须将所有“self.draw.rectangle”替换为“self.rectangle”

© www.soinside.com 2019 - 2024. All rights reserved.