Benutzer-Werkzeuge

Webseiten-Werkzeuge


ws2122:asciia:asciibildconverter.py:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
ws2122:asciia:asciibildconverter.py:start [2022/03/16 15:59]
MoscarTU
ws2122:asciia:asciibildconverter.py:start [2022/03/26 16:22] (aktuell)
MoscarTU
Zeile 14: Zeile 14:
 Diese Bibliotheken werden für "​AsciiBildConverter"​ importiert. ​ Diese Bibliotheken werden für "​AsciiBildConverter"​ importiert. ​
 <code Python> <code Python>
- +# Übergabe und Speicherung von FPS des Video (für globale Variable) 
-def UebertrageZuConverter(fpsZahl,​ invertierung): ​# Übergabe und Speicherung von FPS des Video (für globale Variable)+def UebertrageZuConverter(fpsZahl,​ invertierung):​
     global fps     global fps
     global booleanInvertierung     global booleanInvertierung
Zeile 22: Zeile 22:
 </​code>​ </​code>​
 Die Funktion speichert die FPS-Zahl und den Wert für Invertierung ab, welche von der Hauptdatei hier her übertragen werden. Die Funktion speichert die FPS-Zahl und den Wert für Invertierung ab, welche von der Hauptdatei hier her übertragen werden.
 +<code Python>
 +# Schließt Bild für Abbruch
 +def BildFreigeben():​
 +    try:
 +        bild.close()
 +    except Exception:
 +        print(""​)
 +</​code>​
 +Die Methode ist für die Abbruch-Datei notwendig. Denn sie schließt das momentan geöffnete Frame (sofern offen), damit der Cache gelöscht werden.
 <code Python> <code Python>
  
 def Umwandlung(zaehler):​ def Umwandlung(zaehler):​
  
 +    global bild # global, damit das Bild bei Abbruch geschlossen werden kann
     # bild-input     # bild-input
     bild = Image.open("​Bildercache/​frame%d.jpg"​ % zaehler)     bild = Image.open("​Bildercache/​frame%d.jpg"​ % zaehler)
Zeile 36: Zeile 46:
     # Neuskalierung Bild     # Neuskalierung Bild
     breite, hoehe = bild.size     breite, hoehe = bild.size
-    ​neu_hoehe ​= terminal_hoehe + 1 +    ​neue_hoehe ​= terminal_hoehe + 1 # (z.B. 56 Zeilen sichtbar + 1) 
-    ​neu_breite ​= int(terminal_hoehe + terminal_hoehe*(1/​3))*2+    ​neue_breite ​= int(terminal_hoehe + terminal_hoehe*(1/​3))*2
  
-    ​if neu_breite >= terminal_breite: ​# Falls Terminal zu schmal, wird es auf die breite ​angepasst +    # Falls das Terminal zu schmal, wird es auf die Breite ​angepasst 
-        ​neu_breite ​= int(terminal_breite - 2)+    if neue_breite >= terminal_breite:​ 
 +        ​neue_breite ​= int(terminal_breite - 2)
  
-    bild = bild.resize((neu_breite, int(neu_hoehe)))+    bild = bild.resize((neue_breite, int(neue_hoehe)))
     ​     ​
     </​code>​     </​code>​
-Der Anfang der Funktion befasst sich mit der Größe der Bilder. Zuerst wird die Größe des Terminals ermittelt, damit die Bildausgabe an jede Größe angepasst werden kann (auch wenn man die Größe des Terminals während der Ausführung ändert). Die neue Höhe ist eine Zeile größer als das Terminal, damit oben kein "​Flackern"​ ist. Die neue Breite haben wir mit einem ungefähren Faktor von Höhe und Breite der Zeichen angepasst, ​damit die Ausgabe nicht verzerrt ist. Falls das Terminal zu schmal wird, wird die neue Breite nochmal angepasst.+Der Anfang der Funktion befasst sich mit der Größe der Bilder. Zuerst wird die Größe des Terminals ermittelt, damit die Bildausgabe an jede Größe angepasst werden kann (auch wenn man die Größe des Terminals während der Ausführung ändert). Die neue Höhe ist eine Zeile größer als das Terminal, damit oben kein "​Flackern"​ ist. Die neue Breite haben wir mit einem ungefähren Faktor von Höhe und Breite der Zeichen angepasst, ​sodass ​die Ausgabe nicht verzerrt ist. Falls das Terminal zu schmal wird, wird die neue Breite nochmal angepasst.
 <code Python> <code Python>
  
Zeile 57: Zeile 68:
         chars = ["​@","&","​%","​§","#","​$","​e","​+","​~",",","​.","​ "] # Invertiert         chars = ["​@","&","​%","​§","#","​$","​e","​+","​~",",","​.","​ "] # Invertiert
     else:     else:
-        chars = [" ","​.",",","​~","​+","​e","​$","#","​§","​%","&","​@"​] # für Default-Farbe (ohne Farbe)+        chars = [" ","​.",",","​~","​+","​e","​$","#","​§","​%","&","​@"​] # Default
     neue_pixel = [chars[pixel//​22] for pixel in bild_pixel] # //22 wegen 256 Pixel insgesamt (256//22) für 12 Zeichen     neue_pixel = [chars[pixel//​22] for pixel in bild_pixel] # //22 wegen 256 Pixel insgesamt (256//22) für 12 Zeichen
     neue_pixel = ''​.join(neue_pixel)     neue_pixel = ''​.join(neue_pixel)
  
-    # splittet String von chars in viele verschiene Strings mit Laenge von neu_breite ​und erstellt Liste +    # splittet String von chars in viele verschiene Strings mit Laenge von neue_breite ​und erstellt Liste 
-    ​neue_pixel_count ​= len(neue_pixel) +    ​neue_pixel_anzahl ​= len(neue_pixel) 
-    ascii_bild = [neue_pixel[index:​index + neu_breite] for index in range(0, ​neue_pixel_countneu_breite)]+    ascii_bild = [neue_pixel[index:​index + neue_breite] for index in range(0, ​neue_pixel_anzahlneue_breite)]
     ascii_bild = "​\n"​.join(ascii_bild)     ascii_bild = "​\n"​.join(ascii_bild)
-    print(ascii_bild,​ end="​\r",​ flush = True)+    print(ascii_bild,​ end="​\r",​ flush = True) # Zeilenausgabe,​ end = "​\r"​ für Ersetzen der Zeichen 
  
 </​code>​ </​code>​
-Das ist der 2. Teil der Funktion "​Umwandlung"​. Hier am Anfang wird das Bild erstmal in Schwarz-Weiß umgewandelt. Danach ​wird die Auswahl der Zeichen statt. Je nach Eingabe wird die Reihenfolge getauscht (invertiert). ​Die Zeichen werden dann nach der Helligkeit des Bildes gespeichert ​und anschließend zusammengefügt sowie auf der Konsole ausgegeben.+Das ist der 2. Teil der Funktion "​Umwandlung"​. Hier am Anfang wird das Bild erstmal in Schwarz-Weiß umgewandelt. Danach ​findet ​die Auswahl der Zeichen statt. Je nach Eingabe wird die Reihenfolge getauscht (invertiert). ​Je nach ermitteltem Helligkeitswert wird das dazugehörige Zeichen in der Tabelle ausgewählt. Diese Zeichen werden dann zu einem Gesamtbild zusammengefügt ​und nacheinander ​auf der Konsole ausgegeben.
ws2122/asciia/asciibildconverter.py/start.1647442747.txt.gz · Zuletzt geändert: 2022/03/16 15:59 von MoscarTU