Grid aus vielen Bildern mit Pillow: Wie Offset zwischen Bildern einstellen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
OreganoHauch
User
Beiträge: 2
Registriert: Sonntag 20. Dezember 2020, 17:35

Hallo,

ich habe den Code von hier: https://gist.github.com/njanakiev/1932e ... 9d5f7d7d6f für meine Zwecke leicht abgewandelt, und der funktioniert gut, nur überlappen sich die Bilder teils...:

Code: Alles auswählen

import random

random_setting = False
savepng = False

def concat_images(image_paths, size, shape=None):
    # Open images and resize them
    width, height = size
    images = map(Image.open, image_paths)
    images = [ImageOps.fit(image, size, Image.ANTIALIAS) 
              for image in images]
    
    # Create canvas for the final image with total size
    shape = shape if shape else (1, len(images))
    image_size = (width * shape[1], height * shape[0])
    image = Image.new('RGB', image_size)
    # Paste images into final image
    for row in range(shape[0]):
        for col in range(shape[1]):
            offset = width * col, height * row
            idx = row * shape[1] + col
            image.paste(images[idx], offset)
    
    return image

# Get list of image paths
folder = "/asap3/petra3/gpfs/p06/2018/data/11005475/scratch_cc/Jan/savefig/plotXBIC_singlecell_new"
image_paths = [os.path.join(folder, f) 
               for f in sorted(os.listdir(folder)) if f.endswith('.png')]

if random_setting:
    # Random selection of images
    image_array = random.choices(image_paths, k=45)
else:
    image_array = image_paths

if savepng:
    # Create and save image grid
    now = datetime.now()
    dt_string = now.strftime("%d-%m-%Y_%H_%M_%S")
    image = concat_images(image_array, (400, 400), shape=(5,9))
    image.save(f"image_{dt_string}.png", "PNG")

concat_images(image_array, (200, 200), shape=(5,9))
Wie kann ich einen offset einstellen? Ich würde mich sehr über Hilfe freuen!!

LG
Benutzeravatar
__blackjack__
User
Beiträge: 13117
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@OreganoHauch: Da fehlen Importe‽ Da sollte nichts überlappen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
OreganoHauch
User
Beiträge: 2
Registriert: Sonntag 20. Dezember 2020, 17:35

Stimmt, da fehlt "from PIL import Image, ImageOps". Aber bei mir überlappt es, musste einen weißen Rand bei den ursprünglichen Bildern hinzufügen, damit es geht....
Antworten