diff --git a/fehler.py b/fehler.py new file mode 100644 index 0000000..4bb6960 --- /dev/null +++ b/fehler.py @@ -0,0 +1,87 @@ +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.") \ No newline at end of file