Skip to main content

Image to ASCII Art

Convert images to ASCII art using text characters with adjustable width and brightness.

Geprüft von · Zuletzt geprüft

Aa

Drop an image here or click to upload

Convert your image to ASCII art

Den ASCII-Art-Generator verwenden

  1. Lege ein Bild ab im Upload-Bereich. Porträts und kontstarstreiche Motive mit klaren Silhouetten funktionieren am besten; belebte Landschaften neigen dazu, zu Textur-Rauschen zu verschwimmen.
  2. Lege die Zeichenbreite zwischen 20 und 200 fest. Die Breite gibt an, wie viele ASCII-Zeichen breit die Ausgabe sein wird, und bestimmt damit auch die effektive Auflösung der Kunst.
  3. Aktiviere "Helligkeit invertieren", wenn du das Ergebnis auf einem dunklen Hintergrund anzeigen möchtest. Ohne Invertierung repräsentieren dichte Zeichen dunkle Pixel - gut auf weißen Terminals, invertiert auf dunklen.
  4. Warte auf die Darstellung. Für jede Ausgabezelle tastet das Werkzeug den entsprechenden Block der Quellpixel ab, mittelt deren Helligkeit und wählt ein Zeichen aus einer Rampe aus.
  5. Kopiere den ASCII-Text mit der Kopierschaltfläche oder lade eine .txt-Datei herunter. Füge ihn in einen Kontext mit Monospace-Schrift ein (README, Terminal, Code-Kommentar), damit die Proportionen stimmen.

Wie Helligkeit zu Zeichen wird

Das Werkzeug lädt das Bild auf einen versteckten Canvas, ruft ctx.getImageData auf, um den rohen RGBA-Pixelpuffer zu lesen, und tastet ihn dann auf einem Raster ab. Für jede Rasterzelle (ein Zeichen in der Ausgabe) berechnen wir eine durchschnittliche Helligkeit mit der ITU-R-BT.601-Gewichtung: Y = 0,299*R + 0,587*G + 0,114*B. Diese Gewichtung spiegelt wider, wie das menschliche Auge Grün als heller als Rot und Rot als heller als Blau wahrnimmt - ein einfacher RGB-Durchschnitt würde unnaturlich dunkle Rottöne und helle Grüntöne erzeugen.

Der Helligkeitswert (0 bis 255) wird dann auf einen Index in einer nach visueller Dichte geordneten Zeichenrampe abgebildet - etwa " .,:;ox%#@" für eine Hell-auf-Dunkel-Rampe, umgekehrt für den invertierten Fall. Das breiteste Zeichen (typischerweise "@" oder "#") enthält mehr Tinte, das schmalste (Leerzeichen) ist leer. Entscheidend ist, dass wir kompensieren, dass Monospace-Zeichen typischerweise doppelt so hoch wie breit sind: Das Abtastraster wird vertikal gestreckt, sodass jede Zeichenzelle einem ungefähren 1:2-Horizontal-/Vertikal-Verhältnis im Quellbild entspricht, damit die Ausgabe proportional bleibt.

Wo ASCII-Art noch ihren Platz hat

  • README-Banner für Open-Source-Projekte, die auf GitHub angezeigt werden, wo proportionale Darstellung garantiert ist.
  • Individuelle MOTD-Nachrichten auf einem privaten Server, der SSH-Logins mit einem Tierporträt begrüßt.
  • Code-Kommentar-Dekorationen, die logische Abschnitte einer großen Datei mit einem erkennbaren Motiv trennen.
  • Terminal-basierte Spiele, Dashboards oder CLI-Startbildschirme, wo Unicode unzuverlässig ist, ASCII aber universell gilt.
  • Retro-Stil-Beiträge in sozialen Medien in monospace-freundlichen Kanälen wie Mastodon, Discord-Codeblöcken oder altmodischen Forum-Signaturen.
  • Druckbare Nostalgie - ASCII-Porträts im Nadeldrucker-Stil für Grußkarten und handgefertigte Zines.

Fallstricke, auf die du achten solltest

  • Das Zeichen-Seitenverhältnis ruiniert die Proportionen. Wenn du die Ausgabe in eine Schriftart einfügst, bei der Zeichen nahezu quadratisch sind (selten, aber bei manchen Web-Schriften möglich), sieht das Bild vertikal gestaucht aus. Zeige die Ausgabe immer in einer Monospace-Schrift wie Consolas, Menlo oder JetBrains Mono an.
  • Farbinformationen gehen verloren. Das Graustufenmapping verwirft den Farbton, sodass eine rote Tomate und eine grüne Tomate identisch aussehen. Für farbige ASCII-Art geben Werkzeuge wie jp2a --colors ANSI-Farbsequenzen aus, aber dieses Werkzeug bleibt bei reinem Text.
  • Kontrastschwache Bilder erzeugen schlammige Ausgaben. Wenn die Quelle wenig Helligkeitsvariation aufweist, landen die meisten Zeichen in der Mitte der Rampe und das Bild wird zu einem Feld ähnlicher Glyphen. Erhöhe den Kontrast in der Quelle zuerst.
  • Feine Details verschwinden bei geringen Breiten. ASCII mit 40 Zeichen Breite kann eine Silhouette, aber kein Gesicht zeigen. Erhöhe die Breite für Porträts; halte sie niedrig für ikonische Formen wie Logos.
  • Zeilenenden unterscheiden sich plattformübergreifend. Das Werkzeug verwendet LF-Zeilenenden. Das Einfügen in einen Windows-Kontext, der CRLF erwartet, kann zu Ausrichtungsproblemen führen; verwende einen modernen Texteditor zum Normalisieren.

ASCII-Art: Eine kurze Geschichte

ASCII-Art existiert schon vor Personalcomputern. Fernschreiber-Operatoren der 1960er Jahre sendeten bildartige Nachrichten mit Schreibmaschinenzeichen; der 7-Bit-ASCII-Standard (ANSI X3.4-1968, später ISO/IEC 646) gab ihnen 95 druckbare Zeichen einschließlich Interpunktion mit Dichtestufen von Leerzeichen bis "@", perfekt geeignet für die Codierung von Graustufen. Die BBS-Ära der 1980er Jahre sah ANSI-Art aufblühen - ASCII plus Farbsteuersequenzen und Linienziehenzeichen aus CP437. Moderne Wiederbelebungen umfassen ASCII-Fluidsimulationen, cowsay-Stil-Banner und VT100-Terminal-Dashboards wie k9s und bottom. Projekte wie jp2a, aalib und libcaca bieten ASCII-Bilddarstellung auf der Kommandozeile; letzteres unterstützt auch ANSI-Farben und Unicode-Blockzeichen. Discord und Slack erzwingen Monospace in ihren Codeblock-Renderern, was die ASCII-Art-Tradition auch im Chat von 2026 am Leben erhält.

Browser-ASCII-Art vs. dedizierte Werkzeuge

Für einen schnellen "Bild ablegen, Ausgabe kopieren"-Ablauf ist der Browser schneller als jede Kommandozeile. jp2a --width 80 photo.jpg erzeugt sauberere Ausgabe mit konfigurierbaren Zeichenrampen und optionaler ANSI-Farbe, und aview unterstützt interaktives Zoomen und Schwenken über große Bilder. libcaca-basierte Werkzeuge wie cacaview rendern Unicode-Boxzeichen für höhere visuelle Qualität als reines ASCII. Für Batch-Aufgaben oder Pipeline-freundliche Abläufe (Rendern eines Bildes innerhalb eines Git-Hooks oder CI-Protokolls) gewinnt die Kommandozeile. Dedizierte Dienste wie ascii-art-generator.org und asciiart.eu bieten vorgefertigte Galerien gängiger Motive. Verwende dieses Werkzeug, wenn du eine einmalige Darstellung deines eigenen Bildes möchtest; nutze jp2a, wenn du skriptbare Ausgabe oder Farbe benötigst; besuche die Galerien, wenn du ein fertiges Klassikbild möchtest.

Häufig gestellte Fragen

Wie entscheidet das Werkzeug, welches Zeichen für jeden Bildbereich verwendet wird?

Wir berechnen die durchschnittliche Helligkeit jeder Zelle nach der ITU-R-BT.601-Formel (Y = 0,299R + 0,587G + 0,114B) und ordnen diesen Helligkeitswert einem Index auf einer dichtesortierten Zeichenrampe zu. Helle Pixel werden durch spärliche Zeichen wie Leerzeichen und Punkte dargestellt; dunkle Pixel durch dichte Zeichen wie "@" und "#". Die Reihenfolge wird umgekehrt, wenn du "Helligkeit invertieren" aktivierst, um eine Darstellung auf dunklem Hintergrund zu ermöglichen.

Warum sieht meine ASCII-Ausgabe vertikal oder horizontal verzerrt aus?

Monospace-Zeichen sind in der Regel doppelt so hoch wie breit (ungefähr 1:2-Seitenverhältnis), daher muss das Abtastraster dies kompensieren. Wenn du die Ausgabe in eine Schriftart einfügst, bei der Zeichen nahezu quadratisch sind, sieht das Ergebnis gestaucht oder gestreckt aus. Zeige die Ausgabe immer in einer echten Monospace-Schrift wie Consolas, Menlo, JetBrains Mono oder SF Mono an.

Kann dieses Werkzeug farbige ASCII-Art erzeugen?

Nein, die Ausgabe ist reiner ASCII-Text ohne Farbcodes. Für farbige ASCII-Art betten Kommandozeilen-Werkzeuge wie <code>jp2a --colors</code> ANSI-Farbsteuersequenzen ein, die in Farbterminals dargestellt werden. Alternativ können Unicode-Blockzeichen (Halbblöcke) mit zeichenindividuellen Vordergrund- und Hintergrundfarben für höhere visuelle Qualität pro Zeichenzelle verwendet werden.

Wird mein Bild während der Konvertierung irgendwo hochgeladen?

Nein. Die Datei wird auf einem lokalen Canvas gezeichnet und über <code>ctx.getImageData</code> ausgelesen; die Helligkeitsmatrix wird dann in JavaScript innerhalb deines Browser-Tabs berechnet. Keine Pixeldaten verlassen den Browser. Kopieren in die Zwischenablage und Herunterladen nutzen die lokale Clipboard-API bzw. einen Blob-URL-Anker - beides vollständig lokal.

Welche Breite sollte ich für ein Porträt verwenden?

Porträts benötigen generell mehr Zeichen als Landschaftsbilder, da Gesichtszüge (Augen, Mund) je ein paar Zeichen brauchen, um erkennbar zu werden. Versuche 120-160 für erkennbare Porträts; 80 funktioniert, wenn das Gesicht den Rahmen eng ausfüllt. Für Logos und Symbole mit klaren Silhouetten reichen oft 40-60.

Warum sieht die Ausgabe flach und wenig differenziert aus?

Kontrastschwache Quellbilder packen die meisten Pixel in den mittleren Helligkeitsbereich, sodass die meisten Zellen dasselbe Rampenzeichen erhalten. Erhöhe den Kontrast vor der Konvertierung - selbst eine einfache S-Kurve in einem Fotoeditor macht einen großen Unterschied. Kontstarstreiche Motive (Text, Logos, Silhouetten) erzeugen immer besser lesbare ASCII-Art als gleichmäßig ausgeleuchtete Fotos.

Kann ich das für ein README-Banner auf GitHub verwenden?

Ja. GitHub rendert README-Markdown-Codeblöcke in einer Monospace-Schrift, was genau das ist, was ASCII-Art benötigt. Verpacke die Ausgabe in einen <code>```</code>-Codeblock in deiner README.md, dann bleiben die Proportionen erhalten. Halte die Breite unter 100 Zeichen, um horizontales Scrollen auf Mobilgeräten zu vermeiden.

Behält das Werkzeug das Seitenverhältnis des Bildes bei?

Ja, solange die Anzeigeschrift monospace ist. Das Abtastraster wird aus den Quelldimensionen und der gewählten Breite berechnet, mit einem vertikalen Kompensationsfaktor von ungefähr 2, der das Monospace-Zeichen- Seitenverhältnis berücksichtigt. Das Verhältnis von Zeichenbreite zu Zeilenhöhe entspricht dem Quellverhältnis innerhalb einer Zeile.

Welche Bildtypen eignen sich am besten zur Konvertierung?

Kontstarstreiche Motive mit klaren Silhouetten funktionieren am besten: Porträts vor einfarbigem Hintergrund, Logos, einfache Illustrationen, Strichzeichnungen. Detaillierte Landschaften und Fotos von Laub neigen dazu, visuelles Rauschen zu erzeugen, weil die Rampe subtile Helligkeitsunterschiede nicht darstellen kann. Wenn du ein komplexes Foto konvertieren möchtest, schneide es zuerst eng um das Hauptmotiv herum zu.

Kann ich die Zeichenrampe selbst anpassen?

Die aktuelle Benutzeroberfläche verwendet eine feste Rampe, die für die Lesbarkeit auf hellem und dunklem Hintergrund optimiert ist. Kommandozeilen-Werkzeuge wie jp2a und aalib erlauben das Angeben eines eigenen Zeichensatzes, was für stilistische Effekte nützlich ist (reine Rauten für einen schweren Look, nur Punkte und Leerzeichen für einen minimalistischen Look). Für eigene Rampen nutze jp2a mit <code>--chars " .-=#@"</code> oder ähnlichem.

Wie unterscheidet sich die Bild-zu-ASCII-Konvertierung von einem allgemeinen Bild-zu-Text-Werkzeug?

Die Bild-zu-ASCII-Konvertierung erzeugt eine visuelle Annäherung an das Quellbild, das mit Textzeichen auf einem Raster dargestellt wird. Bild-zu-Text bedeutet typischerweise OCR (optische Zeichenerkennung), die den bereits im Bild vorhandenen Textinhalt extrahiert (Straßenschilder, gescannte Dokumente). Beide Werkzeuge klingen ähnlich, lösen aber unterschiedliche Probleme. Diese Seite macht die visuelle Darstellung; für OCR verwende ein Tesseract-basiertes Werkzeug oder einen dedizierten OCR-Dienst.

Mehr Image Tools