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ä.
Tavoite ei ole pixelien tarkkuus; se on tarkkailukelpoisuus äärimmäisen laajakaistan rajoituksissaM SK1
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:
mostlylucid.consoleimage - Core rendering librarymostlylucid.consoleimage.video - Videotukimostlylucid.consoleimage.transcription - Hehkityskäännöksi + alaotsakegenerointimostlylucid.consoleimage.player - Document playbackmostlylucid.consoleimage.player.spectre - Spectre.Konsole-palautuslähetyksetmostlylucid.consoleimage.spectre - SpectreM SK1Konsole-integraatioConsoleImage on yksi ainoa CLI, joka muuttaa tiedotusvälineitä glyphiksi.
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

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
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: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
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.
Osoittakaa se luetteloon, ja siitä tulee kuva-esitys, johon sisältyy taulukon valvontaa, valinnainen sekoittaminenM SK1 sekä ohjeet tai aikataulut etumatka.
Alex Harrin algoritmista tuli jotain kunnianhimoisempaa.
Laajuusvirrat olivat todellisia,, mutta jokaisen lisäyksen vaikutti luonnollisilta ja hyödyllisiltä. Nyt se käsittelee kuvia , GIF-levyjä
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.
Jotkin terminaalit tukevat inline-grafiikan pöytäkirjoja. pixel-tarkas renderointi samalla kun säilytetään sama kaasuputki ja työkalut
Tässä on sama animoitu GIF joka kuvataan kussakin muodossa:
| ASCII | Viittomakieli | Viitomakielen S(Mono M) MPSK5 Väriblokit P | |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| 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.
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) | |
|---|---|
![]() |
![]() |
| 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
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
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
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ä.

// 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)
];
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.
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
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
];
Renderaattori sisältää useita suoritustapoja:
Vector128/Vector256/Vector512 etäarvioinnista// 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-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ää
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).
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.
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
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
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;
}
}
}
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.
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
// Apply gamma correction and boost saturation/brightness for braille
(r, g, b) = BoostBrailleColor(r, g, b, _options.Gamma);
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.
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

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
Lisäksi on olemassa -M Matrixin digitaalisen lietso-overlay-ilmiön lippu
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.
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
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 |
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ä.
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
Jos haluatte koko teknisen yksityiskohdan, nämä ovat kanonilliset asiakirjat:
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.
MCP-yhteyksien avulla on mahdollista käyttää AI:tä
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.
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.
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
Se, mikä alkoi Alex Harrin nopeasta täytäntöönpanosta, muuttui ASCII-renderointialgoritmiksi terminaaligrafiikkajärjestelmäksi.
Keskeiset opinnot:
Kode on julkinen ala (LisenssitonM SK1 - käyttä sitä miten haluatte GitHub.
Toinen - -väline on lucidVIEW - nopea , pieni Avalonia-clienti, joka tekee Markdownin kauniiksi käyttämättä WebViewia
Lisätietoja osasta 2.
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.