DEV Community

Discussion on: NFT images generator using Python Jupyter Notebook

victorquanlam profile image
Victor Quan Lam Author • Edited on

You can add different colours and shapes (rectangle, star) to generate more images to get familiar. A good practice would be having different characters with a set of variation. For instance:

Furthermore, you can add more colours to create more images according to the following example.


[shape]_weights should be added up to 100 (optional) and the less the shape weights the less likely it will be populated.

\\ random.choices(your list, weights) is the method that returns a list with the randomly selected element from the specified sequence. [weights] is the possibility for each value.
new_image ["Circle"] = random.choices(circle, circle_weights)[0]
Enter fullscreen mode Exit fullscreen mode


Thread Thread
aminassianse profile image
Armen Minassian

background = ["Blue", "Orange"]
background_weights = [30, 40]

circle = ["Blue", "Orange"]
circle_weights = [30, 15]

square = ["Blue","Orange"]
square_weights = [30, 15]

turtle = ["Blue","Orange"]
turtle_weights = [30,15]

For example I added a new attribute called turtle above ^. But when the composite is formed the result images are only of the turtle and it doesn't include any of the orange or blue backgrounds or squares and circles.

Thread Thread
victorquanlam profile image
Victor Quan Lam Author • Edited on

Can you try to add a new composite? It will let the processor know which combination of shapes you want to generate.

for item in all_images:

    im1 ='./layers/backgrounds/{background_files[item["Background"]]}.jpg').convert('RGBA')
    im2 ='./layers/circles/{circle_files[item["Circle"]]}.png').convert('RGBA')
    im3 ='./layers/squares/{square_files[item["Square"]]}.png').convert('RGBA')

// add this line of code
    im4 ='./layers/squares/{square_files[item["Turtle"]]}.png').convert('RGBA')

    #Create each composite
    com1 = Image.alpha_composite(im1, im2)
    com2 = Image.alpha_composite(com1, im3)

// add new combination 3
com3 = Image.alpha_composite(com2, im4 )

    #Convert to RGB
    rgb_im = com3.convert('RGB')
Enter fullscreen mode Exit fullscreen mode


You can use for statement to handle this process better. something like this

for shape in shapeList:
    // generate rgb_img....
Enter fullscreen mode Exit fullscreen mode