0 Pluspunkte 0 Minuspunkte
Kann ich mit Python verschieden große Bilder so zuschneiden das alle gleich gross sind aber trotzdem alles auf den Bildern zu sehen bleibt?
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Das kannst du mitr dem Modul PIL (Pillow). 

pip install pillow

In diesem Beispiel wird die Funktion resize_and_crop definiert, die das Eingabebild so anpasst, dass es in das gewünschte Seitenverhältnis passt. Dabei wird das Bild auf die gewünschte Zielgröße skaliert und dann zentriert zugeschnitten.

from PIL import Image

def resize_and_crop(input_path, output_path, target_size):
    img = Image.open(input_path)

    # Berechnung der Seitenverhältnisse
    original_width, original_height = img.size
    target_width, target_height = target_size
    aspect_ratio = original_width / original_height
    target_aspect_ratio = target_width / target_height

    if aspect_ratio > target_aspect_ratio:
        new_width = int(target_height * aspect_ratio)
        new_height = target_height
    else:
        new_width = target_width
        new_height = int(target_width / aspect_ratio)

    img_resized = img.resize((new_width, new_height), Image.ANTIALIAS)

    # Zentriert zuschneiden
    left = (new_width - target_width) / 2
    top = (new_height - target_height) / 2
    right = (new_width + target_width) / 2
    bottom = (new_height + target_height) / 2

    img_cropped = img_resized.crop((left, top, right, bottom))
    img_cropped.save(output_path)

# Beispielaufruf
input_image = "input.jpg"
output_image = "output.jpg"
target_size = (300, 200)  # Zielgröße (Breite, Höhe)

resize_and_crop(input_image, output_image, target_size)
von