import os import random from PIL import Image def bild_verarbeiten(bild_ordner, ausgabe_ordner, transformierungsfunktion): """ Veraarbeitet alle Bilder in einem Ordner und speichert die Ergebnisse in einem anderen Ordner. Verwendet eine übergebene Funktion zur Bildtransformation. """ for dateiname in os.listdir(bild_ordner): if dateiname.lower().endswith(('png', 'jpg', 'jpeg')): bild_pfad = os.path.join(bild_ordner, dateiname) try: bild = Image.open(bild_pfad) neues_bild = transformierungsfunktion(bild) neues_bild_pfad = os.path.join(ausgabe_ordner, dateiname) neues_bild.save(neues_bild_pfad) print(f"Bild '{dateiname}' erfolgreich verarbeitet und gespeichert in '{neues_bild_pfad}'") except Exception as e: print(f"Fehler beim Verarbeiten von '{dateiname}': {e}") def bild_verarbeiten_einzelbild(bild, zufalls_pixel_chance=0.1): return bild def bild_rauschen(bild, zufalls_pixel_chance=0.01): """ Verarbeitet ein einzelnes Bild, indem es zufällig ausgewählte Pixel mit einer gegebenen Wahrscheinlichkeit durch weiße Pixel ersetzt. Args: bild (PIL.Image.Image): Das zu verarbeitende Bild-Objekt. zufalls_pixel_chance (float): Die Wahrscheinlichkeit (zwischen 0.0 und 1.0), dass ein einzelnes Pixel durch Weiß ersetzt wird. Standardmäßig 0.1 (10%). Returns: PIL.Image.Image: Das verarbeitete Bild mit zufällig ersetzten weißen Pixeln. Das Originalbild wird direkt modifiziert. """ # Lade die Pixeldaten für effizienten Lese-/Schreibzugriff. # .load() gibt ein PixelAccess-Objekt zurück, das direkten Zugriff erlaubt. pixel_data = bild.load() width, height = bild.size # Definiere die Farbe Weiß. Wir müssen den Bildmodus berücksichtigen. # Einfacher Ansatz: Konvertiere zu RGB, dann ist Weiß immer (255, 255, 255). # Alternativ: Prüfe den Modus und setze Weiß entsprechend (z.B. 255 für 'L'). # Wir wählen hier die Konvertierung zu RGB für Konsistenz. if bild.mode != 'RGB': # Konvertiere das Bild zu RGB. Achtung: Dies kann Alphakanäle entfernen # oder Graustufenbilder farbig machen (wenn auch nur in Grautönen). # Wenn der Originalmodus wichtig ist, muss die Logik angepasst werden. bild = bild.convert('RGB') pixel_data = bild.load() # Pixeldaten nach Konvertierung neu laden width, height = bild.size # Größe könnte sich theoretisch ändern (selten) white_color = (255, 255, 255) # Weiß im RGB-Format # Gehe durch jedes Pixel im Bild for x in range(width): for y in range(height): # Generiere eine Zufallszahl zwischen 0.0 und 1.0 # Wenn die Zahl kleiner als die gewünschte Chance ist, ersetze das Pixel if random.random() < zufalls_pixel_chance: # Ersetze das Pixel an Position (x, y) durch Weiß pixel_data[x, y] = white_color # Gib das modifizierte Bild zurück return bild # Hauptteil des Skripts if __name__ == "__main__": bild_ordner = "./bilder" ausgabe_ordner = "./fehler" # Hier kannst du die transformierungsfunktion definieren oder importieren transformierungsfunktion = bild_rauschen # Standardmäßig die Farbtransformation if not os.path.exists(bild_ordner): print(f"Ordner '{bild_ordner}' nicht gefunden. Bitte erstellen Sie ihn.") exit() if not os.path.exists(ausgabe_ordner): os.makedirs(ausgabe_ordner) bild_verarbeiten(bild_ordner, ausgabe_ordner, transformierungsfunktion) print("Verabeitung abgeschlossen.")