Seite 1 von 1

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

Verfasst: Sonntag 20. Dezember 2020, 17:37
von OreganoHauch
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

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

Verfasst: Sonntag 20. Dezember 2020, 20:37
von __blackjack__
@OreganoHauch: Da fehlen Importe‽ Da sollte nichts überlappen.

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

Verfasst: Sonntag 20. Dezember 2020, 21:24
von OreganoHauch
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....