Dies ist eine alte Version des Dokuments!
Diese Datei ist für das Umwandeln eines normalen Bildes in ein ASCII-Bild zuständig.
import sys from PIL import Image import os import time import click import Abbruch as abh abh.Abbruchsignal()
Diese Bibliotheken werden für „AsciiBildConverter“ importiert.
def UebertrageZuConverter(fpsZahl, invertierung): # Übergabe und Speicherung von FPS des Video (für globale Variable) global fps global booleanInvertierung fps = fpsZahl booleanInvertierung = invertierung
Die Funktion speichert die FPS-Zahl und den Wert für Invertierung ab, welche von der Hauptdatei hier her übertragen werden.
def Umwandlung(zaehler): # bild-input bild = Image.open("Bildercache/frame%d.jpg" % zaehler) # Groesse des Terminals size = os.get_terminal_size() terminal_breite = int(size.columns) terminal_hoehe = int(size.lines) # Neuskalierung Bild breite, hoehe = bild.size neu_hoehe = terminal_hoehe + 1 # (56 Zeilen sichtbar + 1) neu_breite = int(terminal_hoehe + terminal_hoehe*(1/3))*2 if neu_breite >= terminal_breite: # Falls Terminal zu schmal, wird es auf die breite angepasst neu_breite = int(terminal_breite - 2) bild = bild.resize((neu_breite, int(neu_hoehe))) # Bild in grau bild = bild.convert('L') bild_pixel = bild.getdata() # ersetzt alle Pixel mit den Zeichen if booleanInvertierung: chars = ["@","&","%","§","#","$","e","+","~",",","."," "] # Invertiert else: chars = [" ",".",",","~","+","e","$","#","§","%","&","@"] # für Default-Farbe (ohne Farbe) 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) # splittet String von chars in viele verschiene Strings mit Laenge von neu_breite und erstellt Liste neue_pixel_count = len(neue_pixel) ascii_bild = [neue_pixel[index:index + neu_breite] for index in range(0, neue_pixel_count, neu_breite)] ascii_bild = "\n".join(ascii_bild) print(ascii_bild, end="\r", flush = True) # Zeilenausgabe, end = "\r" für Ersetzen der Zeichen