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
Saturday, 24 January 2026
Гліфовий рендератор на основі МСК0, що використовує форму МСК1, алгоритми співпадіння МСК2, підтримують зображення МСК3, анімовані GIF, МSK4, відео МСК5, YouTube повторюваність МСК6 та субтитры з багатьма режимами рендерування, включно з шрифтом Брайля для максимального деталізації
Метою не є точність пікселі; а спостережливість під екстремними обмеженнями пропускної спроможностіM SK1
Це один із моїх інструментів. МSK1, МSK2, малі проекти, які я створюю як обмежену тривалість тренувань. ,, як правило, протягом декількох днів.
Цей особливий проект розпочався, коли я зустрів Алекс Гаррі - чудовий artykuł про ASCII рендерінг. Його підхід до формування - співпадіння, а не простого відображання яскравості, був захоплюючим МSK2 і я подумав, що МSK3 Я міг би зробити це в C МСК4 Те, що почалося як простий ASCII зображений переглядач, переросло у терминалну графічну систему з багатьма режимами рендерування ММСК5 відеоінтеграція МПСК6 і навіть інтерфейс інтеграції штучного інтелекту МУСК7
Полний вихідний код доступний на GitHub: https://githubMSC1com/scottgalM SK3mostlylucidMスク4consoleimage
завантажити останній випуск: Релізи GitHub
NuGet пакети:
mostlylucid.consoleimage - Коренная бібліотека рендерингаmostlylucid.consoleimage.video - Obsługа відеоmostlylucid.consoleimage.transcription - Транскрипція шепоту МSK1 генерація субтитровmostlylucid.consoleimage.player - Відтворення документаmostlylucid.consoleimage.player.spectre - СпектрM SK1 Рендерабельності odtwarzaння консоліmostlylucid.consoleimage.spectre - Спектр . Інтеграція з консольоюConsoleImage - це єдиний CLI, який перетворює ЗМІ на гліф.
Найпростіший спосіб, щоб почати - завантажити останній бінар випуску з Релізи GitHub і переконатися, consoleimage на вашому PATH.
consoleimage photo.jpg
consoleimage "https://youtu.be/dQw4w9WgXcQ" --subs whisper

КонсольImage спокійно перетворилась на повний мобільний плеєр. . Версия 4.0 додає YouTube playback, МSK2 авто, \ - завантажені віддалення, ♪ , \ і живі субтитры штучного інтелекту, керовані Whisper \ \ МSK5 \ усі загортані в один і той самий " \ один наказ, і це просто працює.
Відносноти відокремлені від першого використання і зберігаються локально, так що нові функції працюють без ручної інсталяції:
| Комп 'ютер МSK1 Перший триггер завантаження МSK2 Место вキャッシュі | ||
|---|---|---|
FFmpeg ~/.local/share/consoleimage/ffmpeg/ |
||
| ytM SK1dlp | Перший URL YouTube МSK3 ~/.local/share/consoleimage/ytdlp/ |
|
| Сміх Czas trwania | Перше --subs whisper |
~/.local/share/consoleimage/whisper/runtimes/ |
Моделі шепоту МSK1 Перше перетворення МSK2 ~/.local/share/consoleimage/whisper/ |
На Windows, キャッシュи живі під %LOCALAPPDATA%\consoleimage\.
На macOS, キャッシュи знаходяться під вашим користувачамM SK1 локальний папок даних aplikacji (звичайно ~/Library/Application Support/consoleimage/).
Використовувати -y / --yes до авто-утвердити всі завантаженняM SK1
Веб-адреси YouTube відтворюються безпосередньо в terminaлі за допомогою yt-dlp,, які запускаються через таку ж рендеровану лінію, як і локальні файлиM SK2 Це означає, що ті самі режими, шириниM SK1 і вихідні формати пристосовуються, незалежно від того, дивитесь ви в прямому ефірі чи зберігаєте кліп having a custom yt-dlp installM SK1 ConsoleImage can point at it.
Субтитры походять з трьох джерел:
фон у 15-секундних chunks, залишається попереду від odtwarzaнняM SK2 і кэшів .vtt файли, так що повторюваність є миттєвою. Вона підтримує
численні розміри моделей, вибір мови , і домашні кінцеві точки, так що ви можете обмінювати швидкість на точність або відштовхувати роботу
Transcript- також поддерживается лише вихідний код,, який перетворює ConsoleImage на генератор субтитров, що може fed інші інструменти без відтворення відео.
Навімкніть на папку і вона перетвориться на слайд-шоу з клавіатурними контролями, опційне перемішуванняM SK1 і ручним або таймом попередження.
Те, що почалося як вихідний проект, щоб реалізувати алгоритм Алекса Гаррі, стало чимось більш амбітним.
Спектр був справжнім, але кожен додатковий елемент був природнім і корисним. МСК1. Тепер він обробляє зображення, МSK2, GIF, ,, відео, МСК4, і навіть забезпечує MCP-сервер для інтеграції програмного забезпечення. МSK5
КонсольImage надає три різні способи відтворювання зображень в терминалі:
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
| tryb МSK1 команда МSK2 роздільна здатність | найкраще для M |
|---|---|
| Брайля | consoleimage photo.jpg МSK0 8× пікселі на клітину МSK2 крапки Знешкоджений - Максимальний деталі |
| ASCII | consoleimage photo.jpg -a МSK0 1× ♫ ♫ МSK2 ♫ форма ♫ - ♫ співпадна ♫ |
| Колірні блоки | consoleimage photo.jpg -b МSK0 2× вертикально МSK2 половину - блоки мSK4 мSK5 Фотографії M, висока вірність МСК7 |
Брайля - по замовчуванню. Використовувати -a для ASCII або -b для ColorBlocks.
Деякі терминали підтримують вбудовані графічні протоколи (iTerm2, KittyM SK2 SixelMSC3 ConsoleImage можуть використати ці режими для піксель-точне відображання, зберігаючи ту ж трубку та інструментиM SK1
Ось один і той самий анімований GIF, відтворений у кожному режимі:
| МSK0 ASCII | шрифт Брайля МSK2 шрифт Braille ( Моно | ||
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| ФормаM SK1 співпадні символи МSK2 МSK3 патерни з точками | Компактна M, без кольорів МСК6 Unicode півтора МСК7 блоки |
Виход ASCII показує форму- співпадіння на роботі M SK1 використання діагонічних ребер / і \, використання кривых ( і ), та інші щільності використовують такі символи, як @, #, *, і .. Монохромна версія шрифта Брайля менша, ніж у кольорних режимах, водночас зберігаючи повну роздільну здатність
Різниця роздільної здатності стає очевидною з класичною кулею Amiga - анімації, яка вимагає гладких кривих і чистих діагональ МSK1
| МSK0 Брайля (Монохрома МSK2 | Браюля ♫ ♫ МSK4 ♫ Колір ♫ ) ♫ |
|---|---|
![]() |
![]() |
| МSK1 роздільна здатністьM SK2 без кольорів |
Обидві системи мають однакову сітку з точками 2×4 (8 пікселі на символову клітину МSK2 Монокаромна версія повністю не використовує коди кольорів ANSI МSK3, що дає набагато менший результат
Для швидких подивів, сеанси SSH , або пропускна спроможністьM SK2 обмежені середовища, монохромний шрифт MSC4--mono) повністю змінює колір
consoleimage animation.gif --mono -w 120
Результати: 3-5x менший ніж у кольорних режимах, зберігаючи повну роздільну здатність. Ця анімація бейсболю вищеM SK1 Монохромна версія МSK2 КБ у порівнянні з МSK3 Кб для кольорового Брайля . Для тексту-важкий зміст або графічний малюнокMSC6 монохром часто виглядає краще тому що в ' немає кольорного шуму, який б конкурував з інформацією про форму
Традиційне мистецтво ASCII використовує відображення світла - темні пікселі отримують щільніші символи, такі як @ або #, легші пікселі отримують такі вузькі, як . або . Це працюєM SK1, але не звертає уваги на реальну форма символів.
Алекс Гаррі' підход розумніший : аналізує візуальну форму кожного символа M SK2 потім співставляє зображення з зображенням символів з схожими формами . Диагональна лінія має / або \, не просто будь-який символ схожої яскравості
Після того, як ви сприймаєте кожен символ як крихітний 2D-формуM SK1 рендеринг стає найближчим -помічником пошуку в нижньому M SK3вимірному МSK4формовому просторі МSK5
Кожен символ аналізується за допомогою 6-نقча зразкова сітка в 3×2 загострюваному візерункуM SK1
[0] [1] [2] ← Top row (staggered vertically)
[3] [4] [5] ← Bottom row
Ліві круги знизуються, а права - підняються, щоб мінімізувати розриви і уникнути перетинів.. Кожний коло зразку вимірює M SK1 вкритість пелюшкою " на цьому місці. МSK3 створюючи вектор розміру МSK4VSK5
Тут - МСК0 - знову вихід ASCII як референц, коли ми говоримо про сітку зразків.

// 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)
];
Коли рендерер запускає,, він відтворює кожен символ ASCII на маленьке зображення і відображає ділянки M SK1
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();
}
Результатом є пошукова таблиця, яка відображає кожен символ на його форму.
Для пошуку найкращого символу для кожної клітини зображення потрібно шукати: 6-простор у вимірахM SK1 Наївний лінійний пошук буде повільним, тому ми використовуємо Дерево K-D для найшвидшого найближчого-подиви на сусідівM 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
І Дерево K-D забезпечує пошук O(log nM SK1 замість O (nMSC3, а результати зберігаються за допомогою квантових векторів для ще швидших повторюваних пошуків
Matching Raw shape can look flat. Алгоритм застосовує два типи покращення контрасту
Глобальний контраст - Функція живлення, яка рухає нижчі значення до нуля
value = (value / max)^power × max
Контраст напряму - МSK1 зовнішні зразкові кола виявляють краї, де зміст зустрічається з пустим просторомM SK2
// 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
];
Рендерер включає в себе декілька хитрощів
Vector128/Vector256/Vector512 для обчислень відстані// 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);
. Традиційний ASCII дає вам один " піксель МSK2 на клітину символів M SK3 пакет символів шрифта Unicode 8 пікселі в кожну клітину, і ConsoleImage сприймає ці точки як тимчасовий сигналу, не тільки статичну бітмапуM SK1 Результатом є щось на зразок глифуМSK2рівню "суперрозбірливостіMSC4 де рух і рамкиMSL5на -стабільність кадрів роблять відчутні деталі помітно вищими, ніж це передбачає сирова сітка
Олівець літер (U+2800 - UM SK3FFMSC4 кодує шаблон МSK5доти в графі МSK6
┌─────┬─────┐
│ 1 │ 4 │ ← Row 0
├─────┼─────┤
│ 2 │ 5 │ ← Row 1
├─────┼─────┤
│ 3 │ 6 │ ← Row 2
├─────┼─────┤
│ 7 │ 8 │ ← Row 3
└─────┴─────┘
Col0 Col1
Кожна точка відповідає bit:
// 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 };
Код символу просто 0x2800 + (bit pattern). Empty braille cell is ⠀ (UM SK1 повний блок - ⣿ МSK0U+28FFM SK2
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
Через те, що кожна клітина шрифту кодує сітку з точками 2×4 , рендерер працює на внутрішньому малюнку, який МSK2 ширший і МSK3 вищий, ніж виміри символів-ターゲта . \
Перетворення на шрифт Брайля вимагає бінарних рішень - кожна точка ввімкнута чи вимкнена МSK1 фіксований порог МSK2 схожий 50% яскравість
Метод Otsu' знаходить оптимальний порог, збільшуючи різницю між фоном і переднім планом. АлгоритмM SK1
Це автоматично пристосовується до будь-якого зображення. - темні зображення отримують низькі проміжки, , світлі зображення отримують високі промижки, Źródło BrailleRenderer.)
У практиці, наївна шкала Otsu недостатньо для анімаціїM SK1 Подібні шари застосування мають часову послідовність MSC2думка: істеріза, тому рішення про крапки не перевертають кадра - доMST5 кадру МST6 і перцептуальну kompensацію зверху MST7 саме тому виведення залишається стабільним в руслі, а не блукає між кадрами M ST8
Бінарний порог створює жорсткі краї. Погнічення поширює помилки квантування на сусідні пікселі, створюючи ілюзію проміжних тонівM SK1
Ми використовуємо Розчарування Аткінсона (, розроблений Біллом Аткінсоном для оригінального Macintosh Алгоритм Floyd-Стівенберг:
X 1 1
1 1 1
1
(each "1" receives 1/8 of the error)
Чому Аткінсон працює краще для шрифта Брайля:
| Аспект МSK1 Флойд - Стівенберг МSK3 Аткінсон M | |
|---|---|
| Ошибка розсіяна | |
| Розширюваний візерунок | |
| МSK0 Результат | Мягкі відхилення МSK2 Гострі контрасти |
| Найкраще для МSK1 Фотографії МSK2 графічний малюнок |
Аткінсон навмисно відкидає 25% помилкиM SK1, створюючи чіткіші краї - вирішальне для маленького патерна маленьких точок
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;
}
}
}
Консольні кольори викликають. Ми можемо тільки налаштувати один колір на передньому плані за символом,, але шрифт Брайля представляє 8 різні вихідні пікселі.
Оцінивши всі 8 піксельні кольори, ми отримуємо " соляризований МSK2 вигляд МSK3 кольори змішуються в слюдовий сірий лише зразки кольорів з пікселі, де засвітлені крапки:
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
Це гарантує, що відображаний колір відповідає тому, що насправді бачить пользователь - засвітлені крапки МSK1
Брайляні символи по суті розсіяні. - символ, на якому є тільки МSK1 засвітлені крапки, виглядає тьмянішим, ніж цілісний блок. ♫ . ♫ Без補償у ♫ МSK3 ♫ вихід шрифта виглядає об 'єктивно ♫
Щоб повернути сприйманий хром, а не перебільшувати колір:
По замовчуванню підштовхування (вмиканийM SK1
// Apply gamma correction and boost saturation/brightness for braille
(r, g, b) = BoostBrailleColor(r, g, b, _options.Gamma);
Для виjścia символу 100×50
| tryb МSK1 ефективні пікселі МSK2 | |||
|---|---|---|---|
| МSK0 ASCII | МSK2 × \ \ 50 | Колірні блоки | |
| МSK0 Брайля | МSK2 × ♫ ♫ |
Брайля надає 8x резолюція ASCII і 4x резолюція кольорних блоків.
Найкраще продемонструвати перевагу роздільної здатності шрифта Брайля: плавні відхилення та дрібні деталі. Це пейзажна фотографія показує, як шрифт Брайла захоплює тональні відмінності, які б були втрачені в ASCII.

На цьому етапі я зрозумів, що я більше не дивлюся на "ASCII-арт " МSK3 це були розпізнавані зображення
Зверніть увагу на те, що падіння неба та деталі місцевості залишаються помітними навіть при кінцевому розширенні.. З стандартним ASCIIM SK1 вони стали б блокованими і втратили плавний перехід. . Мережа крапів MSC3 надає достатньо просторової роздільної здатності, щоб око інтегрувало візерунок як послідовне зображення, а не дискретні символи.
Є також -M прапорець для цифрового ефекту цифрової дощової накладки Matrix, тому що чому б не . Він об 'єднує падаючих кавказських потоків над вашим зображенням-источником
Анімація в terminaх складна. - наївні підходи спричиняють видиме тремтіння
DECSET 2026 Синхронний вихід - консольна функція, яка дозволяє вам " запустити МSK2 весь кадр одразу ж МSK3 запобігти розриву
// Start synchronised output
Console.Write("\x1b[?2026h");
// Write entire frame
Console.Write(frameContent);
// End synchronised output
Console.Write("\x1b[?2026l");
Рендерінг Дельти - Тільки оновлення змінних клітинM SK1
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);
}
Зазвичай, це зменшує 70-90% для відеоконтенту, де більшість кадру статична.
Для переміщення контенту, малі зміни кольорів кадру на один кадрM SK1 можуть світитися. КонсоліЗображення включає в себе деджиттер, який плавно зміна кольору в кадрах, покращення відчуття стабільностіM SK1 особливо в шрифті Брайля та кольорів-моди блокуванняМSK3
Файлі відео та YouTube URL обробляються за допомогою FFmpeg і yt-dlp (autoM SK2загрузили на першій користі). Можна розпочати з відхиленням тривалість рендерування, перемикання режимів рендераціїM SK1 доdanie субтитров, і виведення в формат GIF або документу, використовуючи той самий рендеруючий ядро .
Контроль відеозапису:
| Ключ МSK1 akcja МSK2 | |
|---|---|
Space |
Повільно МSK1Закінчимо МSK2 |
Q / Esc |
Виход МSK1 |
КонсольImage може заpisać рендерований вихід на власні-документи, які відтворюються без оригінального джерела. .cidz
формат використовує комппресію GZip з кодуванням delta (частіше ~7:1 проти сирого JSONM SK2, а довгі відео можуть бути завантажені як NDJSON
frames записуються поступово, замість буферів у пам 'яті.
Є також пакет для легких гравців (ConsoleImage.Player), який може відтворювати документи без ImageSharp чи FFmpeg
що робить анімовані логотипи CLI можливими без поєднання великих залежності.
Існує повна інтерфейс C# для відтворювання зображень , GIFs M SK2 відео , і документів з тонким MSC4 забарвленими опціями відтворення МSK5 Те ж саме відтворювачі повертають CLI, таким чином, що ви можете вбудувати алгоритми у власні інструменти без перепрограмування
Спектр. Інтеграція консоль available for both live renders and document playback , which allows you treat images as вбудовані інтерфейси. Страницы пакетів README та NuGet охоплюють поверхню API у деталях
Якщо ви хочете повний технічні деталі, це канонічні Docs:
Консольна зображення включає в себе MCP (Model Context Protocol) сервер, який перетворює його на " візуальний зонд МSK3 для операційної системи штучного інтелекту \ . Замість того, щоб просто бути МSK5 інтеграцією з штучним інтелектом через тенденцію ", це \ МSK7 насправді корисне | : модель може попросити зменшити зображення медіа
Через те, що ConsoleImage може відтворювати візуально значні перед переглядами, штучний інтелект може обдумати відеоконтент ітеративно : зразки МSK2 порівнювати M SK3 і досконалювати, а не сліпо споживати цілий відеоконтинент
З інтеграцією MCP, штучний інтелект
Під час написання цієї статті, Я використав ConsoleImage як інструмент MCP для пошуку хороших прикладних кліпів
→ 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)
Ось ' маленька діаграма шрифта Брайля на широті символів МSK1 МSK2 достатньо, щоб побачити комбінацію та рухи
⣿⣿⣿⣿⣿⣿⣿⣿⡿⢃⠌⡱⢈⠱⣈⠱⣈⠱⢈⠛⢿⠿⠟⢛⠛⢛⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⠇⡌⠒⡄⢃⢲⣾⣷⠶⡉⠤⡀⢆⠢⢉⠢⡘⢄⢂⠉⣺⣽⢿⣞⣷⣻⣞⣷⣻⣞⣷⣿
⣿⣿⣿⣿⣿⣿⣿⣿⠐⡈⢅⠢⡁⣾⣿⡏⠤⠑⡂⢅⠢⣕⢨⣔⠡⠌⣂⠱⠘⠯⠿⣾⣽⣳⠯⣝⡗⢿⣞⣿
Це дозволяє мені швидко сканувати контент, щоб визначити цікаві кадри, а не відтворювати все на повній роздільності.
Установка - це один запис на MCP сервері; читайте МCP README для деталей.
Головні інструменти: render_image, render_to_gif, extract_frames, і 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
Те, що почалося як швидке застосування алгоритму ASCII відтворення Алекса Гаррі, перетворилося на терминалну графічну систему.
Головні уроки:
Код - громадський домен (НеlicencjumM SK1 - використовуйте його, як вам сподобається GitHub.
Ще один час - це інструмент "-". lucidVIEW - швидкий , маленький клиент Avalonia, який гарно відтворює Маркдау без використання WebView.
Більше про це в частині 2.
© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.