Back to "Time Boxed Tool: KonsoliImage"

This is a viewer only at the moment see the article on how this works.

To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk

This is a preview from the server running through my markdig pipeline

.NET ASCII Art Tools

Time Boxed Tool: KonsoliImage

Saturday, 24 January 2026

glyph-laatija, joka perustuu -:een ja jossa käytetään muotoa.-:tä, jossa käytetään vastaavia algoritmeja, .:ta, jossa tuetaan kuvia, M SK3:ää, animoituja GIF:itä sekä ,:ä, videoita ja ,:tä.

NuGet lisenssi: Ilman lisenssiä GitHub-julkaisut

Tavoite ei ole pixelien tarkkuus; se on tarkkailukelpoisuus äärimmäisen laajakaistan rajoituksissaM SK1

Esitys

Tämä on yksi omistani "time-boxedM SK2 työkaluista - pienistä hankkeista, joita teemme rajallisen ajan harjoittamisena.

Tämä erityinen hanke alkoi, kun törmäsin Alex Harri'n erinomainen artikkeli ASCII-renderoinnista. Hänen lähestymistapansa muotoon, -, oli mieluummin yhdenmukaista kuin yksinkertainen värikartoitus, ja se oli mielenkiintoinen.

Koko lähdekoodi on saatavilla GitHubissa: https://github.~com^/~scottgal*/~mostlylucid+.~consoleimage

Viimeisimmät versiot: GitHub-julkaisut

NuGet-paketit:

Nopea alku

ConsoleImage on yksi ainoa CLI, joka muuttaa tiedotusvälineitä glyphiksi.

Asetus

Yksinkertaisin tapa aloittaa on laatia uusimpi release binary GitHub-julkaisut ja varmistaa consoleimage on omassa PATH.

consoleimage photo.jpg
consoleimage "https://youtu.be/dQw4w9WgXcQ" --subs whisper

Braille-muodon demo

Uusi v4.0: YouTube + suorat otsikot

ConsoleImage on hiljaisesti kasvanut täysimääräiseksi terminaalinen media playeriksi. Versioon 4.0 lisätään YouTube-lähetysmahdollisuutta , autoM SK3 laaditut riippuvuussuhteet , ja Whisperin tukemat suorat AI-nimenliitteetMSC5 kaikki wrapped in the same SSK6one command and it just worksMST7 flowMSP8

Zero-Setup Auto Downloads

Riittämättömyydet vedetään pois ensimmäisessä käytössä ja tallennetaan paikallisesti,, joten uudet ominaisuudet toimivat ilman manuaalisia installointeja:

Komponenti Ensimmäistä laadintaajuuttajaa SSK2 Cache-paikannus
FFmpeg ~/.local/share/consoleimage/ffmpeg/
yt ~/.local/share/consoleimage/ytdlp/
Whisper Runtime Ensin --subs whisper ~/.local/share/consoleimage/whisper/runtimes/
Whisper-mallit ~/.local/share/consoleimage/whisper/

Windowsin, cachet elävät %LOCALAPPDATA%\consoleimage\.

macOS:ssa, cachet elävät käyttäjän alaisuudessa-local app data folder M SK2tyypillisesti ~/Library/Application Support/consoleimage/).

Käytöstä -y / --yes autoon-todistamme kaikki ohjelmien laadinnot.

YouTube-soittelu

YouTube:n URL-osoitteita näytetään suoraan terminaalissa yt-dlp, kulkeen samaa renderointiputkea läpi kuin paikalliset tiedostot . Tämä merkitsee, että samat muodot, laajuudet , ja tulosmuodot pätevät riippumatta siitä, katsotteko suoraa vai tallenneletteko klipin on omaksuttu räätälöity yt-dlp install, KonsoliImage voi osoittaa siihen

Pääosastot ja suora käännös

Puheenvuorot tulevat kolmesta lähteestä::, olemassa olevat tiedostot, ,, YouTube-captionit ja , tai Live Whisper transcription. tausta 15-sekunden chunksissa, pysyy enemmistönä playbackistaM SK2 ja kaseilta .vtt tiedostoja, joten toistamiseen on välitöntä. Se tukee monenlaisia mallikokoja, kielivaliokunta, ja vastaanotetut loppupisteet, jotta voidaan vaihtaa nopeutta tarkkuuteen tai poistaa työ

Transcript-only output is supported too, which turns ConsoleImage into a subtitle generator that can feed other tools ilman videota.

Slideshow-modus

Osoittakaa se luetteloon, ja siitä tulee kuva-esitys, johon sisältyy taulukon valvontaa, valinnainen sekoittaminenM SK1 sekä ohjeet tai aikataulut etumatka.

Yksinkertaisesta katsojasta terminaaligrafiikkaan

Alex Harrin algoritmista tuli jotain kunnianhimoisempaa.

  1. päivä 1: Alkuperäinen ASCII-renderointi muotoa käyttäen
  2. päivä 2: Lisätty värituki ja animaoitu GIF-lähetys
  3. päivä 3: Korkeamman todenmukaisuuden aikaansaamiseksi otettu käyttöön ColorBlocks-modus
  4. päivä 4: lisättiin braille-modus 8x:n päätöslauselmaan
  5. Sitten myöhemmin: Videotuki, Matrix-vaikutuksetMSC2 asiakirjamuotoM SK3 MCP-Serveri
  6. Paljon myöhemmin: Temporal stabilisation for motion

Laajuusvirrat olivat todellisia,, mutta jokaisen lisäyksen vaikutti luonnollisilta ja hyödyllisiltä. Nyt se käsittelee kuvia , GIF-levyjä

Kolme esittelymenetelmää

ConsoleImage tarjoaa kolmea erilaista tapaa renderoida ohjelmia terminaalissa:

flowchart LR
    A[Source Image] --> B{Choose Mode}
    B --> C[ASCII]
    B --> D[ColorBlocks]
    B --> E[Braille]

    C --> F[Shape-matched characters]
    D --> G[Unicode half-blocks]
    E --> H[2×4 dot patterns]

    style A stroke:#4a9eff
    style B stroke:#ff6600
    style C stroke:#00aa00
    style D stroke:#00aa00
    style E stroke:#00aa00
Menettely Päätöslauselma
Braille consoleimage photo.jpg 8× pixels per cell VAHVISTAA - Maksimaali yksityiskohta
ASCII consoleimage photo.jpg -a
ColorBlockit consoleimage photo.jpg -b 2× vertikaalinen SSK2puolenvälin -blokitM SK4 | Kuvat, korkea todennäköisyys \

Braille on standardin mukainen. käyttö -a ASCII- tai -b ColorBlocksille.

Terminaalipöytäkirjan muodot

Jotkin terminaalit tukevat inline-grafiikan pöytäkirjoja. pixel-tarkas renderointi samalla kun säilytetään sama kaasuputki ja työkalut

Muodon vertailu

Tässä on sama animoitu GIF joka kuvataan kussakin muodossa:

ASCII Viittomakieli Viitomakielen S(Mono M) MPSK5 Väriblokit P
ASCII Braille Braille Mono Blökit
muotoM SK1vastaavat kirjaimet 2×4 pistomuodon mallit

ASCII-tulos näyttää muotoa-vastaavuus työssä -diagonaaliset reunat käytetään / ja \, Kurvien käyttö ( ja ), ja erilaiset pitoisuudet käyttävät sellaisia piirteitä kuin @, #, *, ja .. Monochrominen braille-versio on smaller than colour modes mutta säilyttää koko pisteen resolutionn.

Braille-selvitys: Amiga Boingball

Päätöslauselman edut selviävät Amigan klassisella bouncing-pallolla -, joka edellyttää sujuvia kurveja ja puhtaita diagonaaleja

Viittomakieli MonochromeM SK2 SSK3 Viitomakielen (Kolorin S)
Boingball Mono Boingball Braille
8× päätöslauselma

Molemmat käyttävät samaa 2×4 pisteeseen perustuvaa vertikaalia (8 pixels per character cell). Monochrome-versiossa jätetään kokonaan ANSI:n värikoodit poisM SK3 mikä tuottaa paljon pienempiä tuloksia

Monochrome Braille: Kompaktinen & Nopea

Nopeaa ennakkoarviota varten, SSH-istunnot, tai taajuuslaajuusM SK2rajoitettuja ympäristöjäMSC3 monochrominen braille (--mono) putoaa kokonaan

consoleimage animation.gif --mono -w 120

Seuraukset ovat seuraavat: 3-5x pienempi color modes while retaining full resolution. That boingball animation aboveM SK1 Monochrome version is 259 KB versus 863 KB for colour brailleMST4 For textMstk5heavy content or line artM stk6 monochromainen versio näyttää usein parempi koska ':lla ei ole värikästä melua, joka kilpailee muodon kanssa

Miten ASCII-shape-Matching toimii

Perinteinen ASCII- taide käyttää synkyyskartoitusta - hämäräimmät pixelit saavat tiheämpiä piirteitä, kuten @ tai #, kevyemmät pixelit saavat hajanaiset, kuten . tai . Tämä toimii, mutta jättää huomiotta todellisen muodos kirjaimien.

Alex Harri'lähestymistapa on älykkäämpi : analysoi kullekin kirjaimelle ominaista visuollista muotoaM SK2 ja vastaa sitten kuva-alueita vastaaviin kirjaimiin samankaltaisten muotojen kanssa. A diagonal line should map to / tai \, ei vain jonkinlainen samanlaiseen valokkuuteen perustuva piirre

Kun otetaan huomioon, että kukin piirre on pieni 2D-muodon , renderointi tulee lähimmäksiM SK2naapurin etsintä alhaisessa dimensionalisissa

Shape-vektori

Jokainen luku analysoidaan käyttämällä 6-pisteen näyttelyn järjestelmä 3×2 hämmennetyssä muodossa

[0]  [1]  [2]   ← Top row (staggered vertically)
[3]  [4]  [5]   ← Bottom row

Vasemmisto ympyrät lasketaan ja oikeisto ympyrää nostetaan, jotta aukot minimoidaan välttäen päällekkäisyyksiä.. Jokainen näytteenotto ympyrä mittaa M SK1ink-katto*" paikan päällä.

Tässä on jälleen ASCII-tulos viitearvona, kun puhumme näytteenottojärjestelmästä.

Shape Matching -toiminta

// Staggered sampling positions (3x2 grid as per Harri's article)
private static readonly (float X, float Y)[] InternalSamplingPositions =
[
    (0.17f, 0.30f), // Top-left (lowered)
    (0.50f, 0.25f), // Top-center
    (0.83f, 0.20f), // Top-right (raised)
    (0.17f, 0.80f), // Bottom-left (lowered)
    (0.50f, 0.75f), // Bottom-center
    (0.83f, 0.70f)  // Bottom-right (raised)
];

Character Mapin rakentaminen

Kun rendereri aloitetaan, se renderoi jokaisen ASCII-koodin pieneen kuvaan ja näyttelee 6 alueitaM SK2

private void GenerateVectors(string characterSet, string? fontFamily, int cellSize)
{
    var font = GetFont(fontFamily, cellSize);

    foreach (var c in characterSet.Distinct())
    {
        var vector = RenderCharacterVector(c, font, cellSize);
        _vectors[c] = vector;
    }

    // Normalise vectors for comparable magnitudes
    NormalizeVectors();
}

Tuloksena on lookup-taulukko, jossa kutakin kirjainta kartoitetaan sen muotosignaaliin.

K-D puu Matching

Jokaisen kuvasolun parhaan kirjaimen löytäminen edellyttää hakua 6-ulottuvuusalueM SK1 Naiivi lineaarinen haku olisi hidasta,, joten käyttämme K-D-puu lähimmäislähestymistapa-naapureita koskevat hakutM SK1

flowchart TD
    A[Image Cell] --> B[Sample 6 regions]
    B --> C[Create shape vector]
    C --> D[K-D tree lookup]
    D --> E[Nearest character match]

    style A stroke:#4a9eff
    style C stroke:#ff6600
    style D stroke:#00aa00
    style E stroke:#00aa00

Euroopan unionin K-D-puu tarjoaa O(log n ) lookups sen sijaan, että OSSK2nM SK3 ja tulokset tallennetaan kumulatiivisilla vektoreilla vielä nopeampiin toistuviin lookupeihin

Kontrastien parantaminen

Raw shape matching voi näyttää kiinteältä. Algorithmi soveltaa kahta kontrastien parantamistaM SK1

Maailmanlaajuinen kontrasti - Energia-askel, joka heikentää alhaisempia arvoja kohti nollaa

value = (value / max)^power × max

Suuntaavastainen kontrasti - 10 ulkoiset näytteenottokerrat havaitsevat reunat, joissa sisältö täyttää tyhjän tilan

// 10 external sampling positions for directional contrast
private static readonly (float X, float Y)[] ExternalSamplingPositions =
[
    (0.17f, -0.10f), // Above top-left
    (0.50f, -0.10f), // Above top-center
    (0.83f, -0.10f), // Above top-right
    (-0.15f, 0.30f), // Left of top-left
    (1.15f, 0.20f),  // Right of top-right
    (-0.15f, 0.80f), // Left of bottom-left
    (1.15f, 0.70f),  // Right of bottom-right
    (0.17f, 1.10f),  // Below bottom-left
    (0.50f, 1.10f),  // Below bottom-center
    (0.83f, 1.10f)   // Below bottom-right
];

suorituskyvyn parantaminen

Renderaattori sisältää useita suoritustapoja:

  • Pre-laskentatrigonometri - Lookup-taulukot korvaavat kutakin cell trig'a kohden halvan verkon indeksoinnin
  • SIMD:n optimointi - Käytännöt Vector128/Vector256/Vector512 etäarvioinnista
  • Paralaalikäsittely - MultiM SK1muunneltu renderointi suurempia kuvia varten
  • Stack-jako - välttää ylimääräisen paineen väliaikaisille puskureille
// Pre-computed sin/cos lookup tables (major performance optimisation)
private static readonly (float Cos, float Sin)[] InnerRingAngles = PrecomputeAngles(6, 0);
private static readonly (float Cos, float Sin)[] MiddleRingAngles = PrecomputeAngles(12, MathF.PI / 12);
private static readonly (float Cos, float Sin)[] OuterRingAngles = PrecomputeAngles(18, 0);

Braille Rendering: M SK1x Päätöslauselma

Braille-modus oli suurin tekninen askel. 8 pixels jokaiseen soluun, ja ConsoleImage kohtelee noita pisteitä väliaikainen signaali, ei vain statinen bitmap. Tuloksena on eräänlainen glyfin taso M SK2supersoluutio ", jossa liikkuvuus ja kehysMSC5~-kehyksen vakaus tekevät havaitusta yksityiskohdasta huomattavasti korkeamman kuin raaka-alaiset verkot antavat ymmärtää

Unicoden Braille-blokti

Braille-piirteet (U+2800 - UM SK3FFMSC4 kodifioivat \8-dot-muodon \ 2×4verkon \

┌─────┬─────┐
│  1  │  4  │  ← Row 0
├─────┼─────┤
│  2  │  5  │  ← Row 1
├─────┼─────┤
│  3  │  6  │  ← Row 2
├─────┼─────┤
│  7  │  8  │  ← Row 3
└─────┴─────┘
  Col0  Col1

Jokainen kohta vastaa bittia:

// Dot bit positions in braille character
// Pattern:  1 4
//           2 5
//           3 6
//           7 8
// Listed in 2×4 scan order: 1,4,2,5,3,6,7,8.
private static readonly int[] DotBits = { 0x01, 0x08, 0x02, 0x10, 0x04, 0x20, 0x40, 0x80 };

Luettelo on yksinkertaisesti 0x2800 + (bit pattern). tyhjentävä braille-solu on (UM SK1 koko ryhmä on (U+28FF).

Braille-putki

flowchart LR
    A[Source Image] --> B[Resize to W×2, H×4]
    B --> C[Grayscale conversion]
    C --> D[Otsu threshold + temporal stabilisation]
    D --> E[Atkinson dithering]
    E --> F[Build braille codes]
    F --> G[Hybrid colours + perceptual compensation]
    G --> H[Terminal output]

    style A stroke:#4a9eff
    style D stroke:#ff6600
    style E stroke:#ff6600
    style G stroke:#00aa00

Koska kukin braille-solu kodifioi 2×4 pisteeseen perustuvan verkon ,, rendereri toimii sisäisen kuvan parissa, joka on laajempi ja korkeampi kuin kohdennetun文字n mittasuhteet.

Otsu'smenetelmäM SK1Automaattinen raja-arvo

Brailleen kääntäminen edellyttää binaarisia päätöksiä. - kukin kohta on aktivoitu tai sammutettu.

Otsu's-menetelmä löytää optimaalisen kynnysarvon maksimoimalla etu- ja taustaerot. Algoritmi

  1. Pilsiintensiteettien histogramman rakentaminen (256 binitM SK1
  2. Jokaisen mahdollisen kynnysarvon (0-255), mukaan lasketaan classes variance
  3. Valittakaa kynnysarvo, joka maksimoi vaihtelun

Tämä mukautetaan automaattisesti mihin tahansa kuvaan - synkiset kuvat saavat alhaisia kynnysarvoja , valoisat kuvat saavat korkeita kynnysarvoja BrailleRenderer-lähde.)

Käytännössä, naïve Otsu-kynnys on riittämätön animaatiolleM SK1 täytäntöönpanolohkoissa on ajantasainen johdonmukaisuus (ajattelu: hystereesi, joten kohdistamispäätökset eivät käännä kehystäMSC4kehykseenMST5kehäänMst6 ja tajullinen korvaus ylhäältäpäinMSP7 minkä vuoksi tuoto pysyy vakaana liikenteessä sen sijaan, että kehyksien välille törmääisi

Atkinson Dithering

Kahdenvälisen kynnysarvon avulla luodaan ankarat reunat. Tausoituminen levittää kumulaatiovirhettä naapuripixeliin, ja aiheuttaa välituntien harhakuvitelmiaM SK1

Me käytämme Atkinsonin hämmennys (, jota Bill Atkinson kehitti alkuperäiseen Macintosh-järjestelmään Floyd-Steinberg-algoritmi:

        X   1   1
    1   1   1
        1

(each "1" receives 1/8 of the error)

Miksi Atkinson toimii paremmin braillessa:

Aspect FloydM SK2Steinberg Atkinson SSK4
erehdys levitettiin 100% (16/16) 4 5
Laajennetun mallin määrittely.
Tuloksena pehmeämmät gradientit korkeampi kontrasti S
Paras vaihtoehto SSK1 Kuvat Line artSKT3 teksti S

Atkinson sivuuttaa tarkoituksellisesti virheen 25%, joka tuo mukanaan jyrkempiä reiteitä.

private static void ApplyAtkinsonDithering(Span<short> buffer, int width, int height, byte threshold)
{
    for (int y = 0; y < height; y++)
    {
        for (int x = 0; x < width; x++)
        {
            int idx = y * width + x;
            short oldPixel = buffer[idx];
            byte newPixel = oldPixel > threshold ? (byte)255 : (byte)0;
            buffer[idx] = newPixel;

            short error = (short)(oldPixel - newPixel);
            short diffuse = (short)(error / 8);  // 1/8 of error

            // Diffuse to 6 neighbours (only 6/8 = 75% of error)
            if (x + 1 < width)
                buffer[idx + 1] += diffuse;
            if (x + 2 < width)
                buffer[idx + 2] += diffuse;
            if (y + 1 < height)
            {
                if (x > 0)
                    buffer[idx + width - 1] += diffuse;
                buffer[idx + width] += diffuse;
                if (x + 1 < width)
                    buffer[idx + width + 1] += diffuse;
            }
            if (y + 2 < height)
                buffer[idx + width * 2] += diffuse;
        }
    }
}

Hybridinen värikoe

Terminaalivärit ovat haaste: voimme vain asettaa yksi etulinjan väri kohti sanaa,, mutta braille edustaa 8 erilaiset lähdepixeleet.

Kaikkien 8 pixel-värien vertailu tuottaa "solarisoidunM SK2 vaikutelman. vain näytteen värit pixeleistä, joissa kohdat on valaistu:

flowchart TD
    A[2×4 Pixel Block] --> B{Which pixels are lit?}
    B -->|Dots 1,4,7| C[Sample only those 3 pixels]
    B -->|Dots 2,3,5,6,8| D[Sample only those 5 pixels]
    C --> E[Average lit pixel colours]
    D --> E
    E --> F[Apply colour boost]
    F --> G[Set as foreground colour]

    style A stroke:#4a9eff
    style B stroke:#ff6600
    style E stroke:#00aa00
    style F stroke:#00aa00

Näin varmistetaan, että esitetyt värit vastaavat sitä, mitä käyttäjä itse näkee.

Percepuaalinen värikorvaus varakkaille lipuille

Braille-piirteet ovat luonteeltaan epämääräisiä - luku, jossa on vain 2-3 valotetut pisteet, näyttää hämärämältä kuin kiinteät lohkotM SK2 Ilman korvausta, braille-tuloksen kuva vaikuttaa objektiivisesti |" |oikeutetusti | " | mutta visuaalisesti hidas |

Toistaa tajuttu kromi eikä liioitella väriä:

Tasa-arvon nostaminen (suuntattavissaM SK1

  • Satunnus:
  • Lämpeneminen:
// Apply gamma correction and boost saturation/brightness for braille
(r, g, b) = BoostBrailleColor(r, g, b, _options.Gamma);

Päätöslauselman vertailu

100×50-nimitystuloksen osalta

Mode Tehokkaat pixelit
ASCII
ColorBlocks SSK2 3 4 5 6
Braille

Braille tarjoaa 8x päätöslauselma ASCII:n ja 4x päätöslauselma väriblokit.

Braille in Action: Luettelo maisemasta

Paras esimerkki braillen resolution-etuista on se, että se on joustava ja hienovarainen.This landscape photograph shows how braille captures subtle tonal variations that would be lost in ASCII

Landscape Braillessa

Tuolloin ymmärsin, etten enää katso "ASCII-taitoa", vaan tunnistettavissa olevia kuvia.

Huomauttakaa, että ilmatilan ja maaperän yksityiskohdat säilyvät näkyvissä myös loppuselvityksessä. Standardin ASCII-standardillaMSC1 ne muuttuisivat lukkiutuneiksi ja menettäisivät sujuvat siirtymävaiheensa . Punktiverkko tarjoaa riittävän avaruuden resolutionn, jotta silmä integroi mallin jatkuviksi kuvauksiksi sen sijaan, että ne olisivat yksittäisiä piirteitäM SK4

Matrix-modus

Lisäksi on olemassa -M Matrixin digitaalisen lietso-overlay-ilmiön lippu

Animaatio ja video

Flicker-Vapaa palaaminen

Terminaaleissa tapahtuva animaatio on hankalaa - naiivit lähestymistavat aiheuttavat näkyvän sysäyksenM SK1 KonsoleImage käyttää useita tekniikoita:

DECSET 2026 Synchronisoitu tulos - terminaalimahdollisuus, joka mahdollistaa sen, että "kommittaan M SK2 koko kehys samanaikaisesti , estää purkamisen

// Start synchronised output
Console.Write("\x1b[?2026h");

// Write entire frame
Console.Write(frameContent);

// End synchronised output
Console.Write("\x1b[?2026l");

Delta Rendering - Vain muutokset muuttuneet solut

public (string output, CellData[,] cells) RenderWithDelta(
    Image<Rgba32> image,
    CellData[,]? previousCells,
    int colorThreshold = 8)
{
    var cells = RenderToCells(image);
    var height = cells.GetLength(0);
    var width = cells.GetLength(1);

    // First frame or dimension change - full redraw
    if (previousCells == null)
        return (RenderCellsToString(cells), cells);

    // Delta render - only output changed cells
    var sb = new StringBuilder();

    for (var y = 0; y < height; y++)
    {
        for (var x = 0; x < width; x++)
        {
            var current = cells[y, x];
            var previous = previousCells[y, x];

            // Skip if cell hasn't changed
            if (current.IsSimilar(previous, colorThreshold))
                continue;

            // Position cursor and output
            sb.Append($"\x1b[{y + 1};{x + 1}H");
            sb.Append(current.ToAnsi());
        }
    }

    return (sb.ToString(), cells);
}

Tämä vähentää tavallisesti tuotantoa 70-90% videosisältöjen osalta, joissa suurin osa kehyksestä on statista.

Väliaikainen vakaus (DejitterM SK1

Siirrettäessä sisältöä, pienet tilikohtaiset toimenpiteetM SK1levyn värimuutokset voivat hämärtää . KonsoleImage sisältää dejitter-passin, joka helpottaa värinmuutos ovien välillä, havaittavan vakauden parantaminenM SK1 erityisesti braille- ja väritekniikassa

Videotuki

Video- ja YouTube-URL:itä käsitellään FFmpegilla ja yt:llä. katkaisun kesto, vaihtaa renderointimuotoja, lisätä alaotsakeita , ja vie GIF- tai asiakirjamuodoihin samasta renderointikerrosta käyttäen

Videon palauttamista koskevat laitteet:

Avain Toiminta
Space
Q / Esc Quit

Dokumenttiformatti

ConsoleImage voi tallentaa rendered-tuloksen autoon, johon sisältyvät asiakirjat, jotka pelataan takaisin ilman alkuperäistä lähdettä. .cidz muodossa käytetään GZip-komprimointia delta-koodin (vapaasti ~7:1 verrattuna raakaan JSONiinM SK2, ja pitkät videot voidaan lähettää NDJSONina Näin ollen olot kirjoitetaan vähitellen memory-bufferin sijasta.

Lisäksi on olemassa kevympi pelaajapaketti (ConsoleImage.Player), joka voi palauttaa asiakirjat ilman ImageSharp- tai FFmpeg-ohjelmia joka tekee animoidut CLI-logot toteutettaviksi ilman raskaiden riippuvuuksien yhdistämistä.

API & Integraatiot

On olemassa täydellinen C# API, jonka avulla voidaan renderoida kuvia. esittäjät palaavat CLI:hen,, joten te voitte siirtää algoritmeja omiin työkaluihinne ilman, että re-

Spectre.Konsole-integraatio on käytettävissä sekä elokuvien esittelyjen että asiakirjan kääntämisen osalta. renderables inside layouts. README- ja NuGet-pakettisivut kattavat API:n pinta-alan yksityiskohtaisesti

Readmes & Deep Dives

Jos haluatte koko teknisen yksityiskohdan, nämä ovat kanonilliset asiakirjat:

MCP Server for AI Integration

KonsoleImage sisältää MCP:n (Model Context Protocol-Serverin, joka muuntaa sen "\visual probeksi \ "\ for AI workflows\ M SK4\ Sen sijaan, että se olisi vain "\AI integraatio, koska trendi \ ",\ se \ '\ on itse asiassa hyödyllinen \ :\ malli voi pyytää vähennettyjä tiedotusvälineiden näkemyksiä | ,\ mitata yksinkertaisia signaaleja \

Koska ConsoleImage voi esittää havainnollisesti merkityksellisiä esityksiä, AI voi ajatella videosisällöstä toistuvasti, :, näytteenottoa,,, vertailua ja viimeistelyä sen sijaan, että se kuormittaisi kokonaisia videoita.

Konkreettiset AI-tehtävät

MCP-yhteyksien avulla on mahdollista käyttää AI:tä

  • Paljon värikkiä osia: Katsakaa video alhaisella päätöstellään , tunnistaa vilkasimmat tai korkeimman mahdollisena olevat M SK2contrast-raammit , ja vie lyhyt GIF
  • Tunnustetaan tapahtuman muutokset: Mitataan kehysM SK1to-kehyksen delta-energiaa tärkeiden hetkien tunnistamiseksi
  • Ottakaa esiin mielenkiintoinen sisältö: Heuristiikkaa käytetään sellaisten rahojen löytämiseen, jotka näyttävät sisältävän ihmisiä tai inhimillisiä hahmoja.
  • Luettelotaulut: Laadi N-kysymyksiä sisältävän kehyksen yhteyssivua yhtenä esitetynä asiakirjana

Todellinen esimerkki: Tämän artiklan rakentaminen

Kirjoittaessani tätä artikkelia, käytin ConsoleImage-välinettä MCP:n välineenä löytääkseni hyviä esimerkkejä klipseistä.

→ extract_frames (low-res preview at various timestamps)
→ compare_render_modes (ASCII vs braille at promising scenes)
→ render_to_gif (final export of selected clips)

Tässä on pieni brailleen esikuva 30 lukujen laajaksi - riittävän suuri, jotta voidaan havaita kokoonpano ja liikkuvuus

⣿⣿⣿⣿⣿⣿⣿⣿⡿⢃⠌⡱⢈⠱⣈⠱⣈⠱⢈⠛⢿⠿⠟⢛⠛⢛⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⠇⡌⠒⡄⢃⢲⣾⣷⠶⡉⠤⡀⢆⠢⢉⠢⡘⢄⢂⠉⣺⣽⢿⣞⣷⣻⣞⣷⣻⣞⣷⣿
⣿⣿⣿⣿⣿⣿⣿⣿⠐⡈⢅⠢⡁⣾⣿⡏⠤⠑⡂⢅⠢⣕⢨⣔⠡⠌⣂⠱⠘⠯⠿⣾⣽⣳⠯⣝⡗⢿⣞⣿

Tämä antaa minulle mahdollisuuden nopeasti skannailla sisältöä, jotta voisin tunnistaa mielenkiintoiset olot sen sijaan, että esitän kaiken kaikessa päätöslauselmassa.

Ohjelmointi

Järjestelmä on yksi ainoa MCP-Serverin entrée; ks. MCP README Lisätietoja. Tärkeimmät välineet ovat render_image, render_to_gif, extract_frames, ja compare_render_modes.

Rakennus

flowchart TB
    subgraph Core["ConsoleImage.Core (NuGet)"]
        AR[AsciiRenderer]
        BR[BrailleRenderer]
        CB[ColorBlockRenderer]
        CM[CharacterMap]
        AP[AnimationPlayer]
        DOC[Document Format]
    end

    subgraph Video["ConsoleImage.Video.Core"]
        FF[FFmpegService]
        VP[VideoPlayer]
    end

    subgraph CLI["ConsoleImage CLI"]
        MAIN[Unified CLI]
    end

    subgraph MCP["ConsoleImage.Mcp"]
        TOOLS[AI Tools]
    end

    MAIN --> Core
    MAIN --> Video
    TOOLS --> Core

    style Core stroke:#4a9eff
    style Video stroke:#ff6600
    style CLI stroke:#00aa00
    style MCP stroke:#9933ff

Päätelmät

Se, mikä alkoi Alex Harrin nopeasta täytäntöönpanosta, muuttui ASCII-renderointialgoritmiksi terminaaligrafiikkajärjestelmäksi.

Keskeiset opinnot:

  • Shape-matching beats brightness mapping kirjaimenvalinnan laatua varten
  • Braille-piirteet tarjota yllättävän päätöslauselman terminaaleissa
  • Deltan renderointi on välttämätöntä sujuvan videotahrauksen kannalta
  • Väliaikainen johdonmukaisuus + tajullinen korvaus ovat ero " tunnistettavanM SK1 ja " katsettavissa olevan" välillä

Kode on julkinen ala (LisenssitonM SK1 - käyttä sitä miten haluatte GitHub.

Tulee seuraavaksi: Osuus M SK1 - lucidVIEW

Toinen - -väline on lucidVIEW - nopea , pieni Avalonia-clienti, joka tekee Markdownin kauniiksi käyttämättä WebViewia

Lisätietoja osasta 2.

Viittaukset

logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.