whys this failing? project is creating an NFT generator in python

Viewed 49

AttributeError: 'function' object has no attribute 'read'

Here is my code, I don't understand the reference to a fault in the package im using

File "/Users/brianjamiel/Desktop/nft/avatar_generator.py", line 46, in generate_avatar image = self.render_avatar_image(assets_path_sequence) File "/Users/brianjamiel/Desktop/nft/avatar_generator.py", line 34, in render_avatar_image layer_image = Image.open(image_path) File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/PIL/Image.py", line 3098, in open fp = io.BytesIO(fp.read()) AttributeError: 'function' object has no attribute 'read'

import os
import random
from typing import List
from PIL import Image
from layer import Layer

class AvatarGenerator:
    def __init__(self, assets_path: str):
        self.layers : List[Layer] = self.load_assets_layers(assets_path)
        self.background_color =(120, 150, 180)
        self.output_path: str = "./output"
        os.makedirs(self.output_path, exist_ok=True)
    
    def load_assets_layers(self, assets_path: str):
        sub_paths = sorted(os.listdir(assets_path))
        layers = []
        for sub_path in sub_paths:
            assets_path = os.path.join(assets_path, sub_path)
            layer = Layer(assets_path)
            layers.append(layer)
        return layers
    
    def generate_assets_sequence(self):
        assets_path_sequence = []
        for layer in self.layers:
            assets_path = layer.get_random_assets_path
            assets_path_sequence.append(assets_path)
            
        return assets_path_sequence
    
    def render_avatar_image(self, assets_path_sequence: List[str]):
        image = Image.new("RGBA", (124, 231), self.background_color)
        for image_path in assets_path_sequence:
            layer_image = Image.open(image_path)
            image = Image.alpha_composite(image, layer_image)
            return image
    
    def save_image(self, image: Image.Image):
        image_file_name = "Pixeltar.png"
        image_save_path = os.path.join(self.output_path, image_file_name)
        image.save(image_save_path)
        
    def generate_avatar(self):
        print("AvatarGenerator: Generating Avatar!, Please Wait")
        assets_path_sequence = self.generate_assets_sequence()
        image = self.render_avatar_image(assets_path_sequence)
        self.save_image(image)

Avatar_Generator.py

youtube video im following

0 Answers
Related