[Python] Making a collage in PIL

Discussão em 'Python' iniciado por Stack, Setembro 8, 2025.

  1. Stack

    Stack Membro Participativo

    I. Am. Stuck.

    I have been working on this for over a week now, and I cannot seem to get my code to run correctly. I am fairly new to PIL and Python as a whole. I am trying to make a 2x3 collage of some pictures. I have my code listed below. I am trying to get my photos to fit without any access black space in the newly created collage, however when I run my code I can only get 2 pictures to be placed into the collage, instead of the 6 I want. Any suggestions would be helpful.

    *CODE EDITED

    from PIL import Image
    im= Image.open('Tulips.jpg')




    out=im.convert("RGB", (
    0.412453, 0.357580, 0.180423, 0,
    0.212671, 0.715160, 0.072169, 0,
    0.019334, 0.119193, 0.950227, 0 ))
    out.save("Image2" + ".jpg")

    out2=im.convert("RGB", (
    0.9756324, 0.154789, 0.180423, 0,
    0.212671, 0.715160, 0.254783, 0,
    0.123456, 0.119193, 0.950227, 0 ))
    out2.save("Image3" + ".jpg")



    out3= im.convert("1")
    out3.save("Image4"+".jpg")


    out4=im.convert("RGB", (
    0.986542, 0.154789, 0.756231, 0,
    0.212671, 0.715160, 0.254783, 0,
    0.123456, 0.119193, 0.112348, 0 ))
    out4.save("Image5" + ".jpg")


    out5=Image.blend(im, out4, 0.5)
    out5.save("Image6" + ".jpg")

    listofimages=['Tulips.jpg', 'Image2.jpg', 'Image3.jpg', 'Image4.jpg', 'Image5.jpg', 'Image6.jpg']

    def create_collage(width, height, listofimages):
    Picturewidth=width//3
    Pictureheight=height//2
    size=Picturewidth, Pictureheight
    new_im=Image.new('RGB', (450, 300))
    for p in listofimages:
    Image.open(p)
    for col in range(0,width):
    for row in range(0, height):
    image=Image.eval(p, lambda x: x+(col+row)/30)
    new_im.paste(p, (col,row))
    new_im.save("Collage"+".jpg")

    create_collage(450,300,listofimages)

    Continue reading...

Compartilhe esta Página