Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws2122:asciia:asciibildconverter.py:start

Dies ist eine alte Version des Dokuments!


AsciiBildConverter.py:

import sys
from PIL import Image
import os
import time
import click
import Abbruch as abh
abh.Abbruchsignal()
 
 
def UebertrageZuConverter(fpsZahl, invertierung): # Übergabe und Speicherung von FPS des Video (für globale Variable)
    global fps
    global booleanInvertierung
    fps = fpsZahl
    booleanInvertierung = invertierung
 
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
ws2122/asciia/asciibildconverter.py/start.1647441157.txt.gz · Zuletzt geändert: 2022/03/16 15:32 von MoscarTU