AsciiLoom

AsciiLoom, görselleri GitHub README dosyalarına uygun ASCII, Markdown ve erişilebilir SVG çıktısına dönüştüren, tarayıcıda yerel çalışan stüdyo ve CLI aracıdır.

AsciiLoom proje kapak görseli

AsciiLoom, bir görseli GitHub README dosyasında sorunsuz görünen ASCII çizime dönüştürmek için geliştirdiğim bir araç. Tarayıcı stüdyosu ve komut satırı aracı aynı TypeScript dönüşüm çekirdeğini kullanıyor; görsel tarayıcı sekmesinden hiç çıkmıyor.

Problem

Terminal odaklı ASCII paketlerinin çoğu ANSI renklerine ve konsol düzenine göre tasarlanmış. README ise farklı kısıtlar getiriyor:

AsciiLoom bu kısıtları sonradan uyarlanmış bir terminal çizicisiyle değil, baştan README için tasarlanmış bir dönüşüm hattıyla ele alıyor.

Bu projede odaklandığım noktalar

Öne çıkan özellikler

Dönüşüm hattı

Görsel önce yönüne göre düzeltiliyor ve karakter hücresinin en-boy oranına göre yeniden ölçekleniyor. Ardından son ızgaranın üzerinde örnekleniyor, saydam pikseller seçilen arka planla birleştiriliyor ve sRGB kanalları doğrusallaştırılıp algısal parlaklığa çevriliyor. Hücre ortalamaları CIE L* açıklığına dönüştürülüyor; böylece rampadaki seviyeler görünür tonlara eşit dağılıyor. Yüzdelik otomatik seviye, yerel ayrıntı güçlendirme, gama, kontrast ve parlaklık ayarları ton kontrolünü tamamlıyor.

Stiller ve ön ayarlar

Üç çıktı biçimi

Kullanım

Kurulum gerekmeden asciiloom.aliyilmaz.co adresinden kullanılabiliyor. CLI, npm’de asciiloom adıyla yayımlanıyor:

npm install --global asciiloom
asciiloom ./photo.jpg --preset readme --output ./ascii-photo.md

Metin, Markdown ve SVG çıktısını birlikte üretmek için:

asciiloom ./logo.png --preset logo --format all --output ./docs/logo-ascii

Teknik mimari

Dönüşüm çekirdeği DOM, Canvas, Node veya Sharp’a bağımlı değil; ham RGB/RGBA piksel verisi alıyor. Bu yüzden tarayıcı ve CLI aynı sonucu üretiyor ve birim testleri hızlı çalışıyor. Tarayıcıda dönüşüm ayrı bir worker’da yürüyor. CLI ise görseli Sharp ile çözüyor, piksel işlemeden önce bütün hedef dosyaları doğruluyor ve her dosyayı atomik bir yeniden adlandırmayla yazıyor. Web arayüzü bir çatıya bağlı olmadan statik olarak derleniyor ve Cloudflare Workers üzerinde yayımlanıyor.

Doğrulama

Yayın kontrolü sıkı TypeScript denetimini, kapsam eşiklerini, Chromium üzerinde uçtan uca tarayıcı testini ve 390 piksel mobil yerleşim kontrolünü çalıştırıyor. Gerçek npm paketini boş bir projeye kurup kurulu CLI’nin depodaki bütün metin, Markdown ve SVG örneklerini bayt bayt aynı ürettiğini de doğruluyor.

Sınırlar

Bağlantılar

← Tüm projeler