Ich muss ein Programm erstellen, das eine Datei von der Kommandozeile einliest und in ASCII-Art umwandelt. Ich verwende das PPM-Format und hier ist ein Link zu dem Projekt .
Hier ist was ich bisher habe:
%Vor%Ich erhalte einen Fehler, der besagt, dass das Objekt 'int' nicht iterierbar ist. Gibt es einen einfachen Weg, dies zu beheben, und wie würde jemand empfehlen, dies auszudrucken, während das Bild erhalten bleibt?
Und das letzte, worüber ich mir nicht sicher bin, ist, wie man die Breite und Höhe des Bildes bewahren kann.
Jede Hilfe wird sehr geschätzt.
Sie können image-to-ansi.py
für die Konvertierung verwenden.
Laden Sie zuerst image-to-ansi.py
:
Speichern Sie dieses Skript als ppmimage.py
:
Sie können das Skript wie folgt testen (vorausgesetzt, Sie haben netpbm
und imagemagick
installiert):
convert -resize $(($COLUMNS*2))x$(($LINES*2)) logo: pnm:- | pnmtoplainpnm | python3 ppmimage.py
Auf meinem Rechner sieht das so aus:
Hier haben Sie Ihren Code geändert und funktioniert.
Es ist nicht optimal, es berücksichtigt nicht das Vorhandensein von mehr oder weniger Kommentaren im Header und es gibt keine Ausnahmebehandlung, aber es ist ein Start.
Dies sind die ppm-Zahl und das ASCII-Art-Ergebnis
Und die Micro-ppm-Datei, die ich für das Beispiel verwendet habe:
%Vor%Ich habe vor einiger Zeit eines davon in C # geschrieben und das Zeichen berechnet, das mit dieser Formel verwendet werden soll:
%Vor%Wie für die Breite und Höhe, können Sie alle zwei Zeilen der vertikalen Pixel um die Hälfte zu halbieren.
Edit 1: als Antwort auf den Kommentar: Die Grundidee ist, dass es Ihren RGB-Wert von 0 bis 255 auf 0 auf die Länge des Arrays skaliert und diesen als Index verwendet.
Bearbeiten 2: Aktualisiert, um zu korrigieren, dass ich Ihre Graustufen-Normalisierung ignoriert habe.
Tags und Links python python-3.x ascii-art