ASCII Sanat Üretici (Görselden Metne)

Herhangi bir fotoğrafı ASCII sanata dönüştürün — ayarlanabilir genişlik ve karakter yoğunluğu, kopyalanabilir veya indirilebilir tek renkli metin çıktısı.

1.148 görüntülenme

100

Nasıl Çalışır

Üretici, görselinizi bir canvas üzerine çizer, ardından bir örnekleme hücreleri ızgarasına böler ve her hücrenin ortalama parlaklığını (luminance) hesaplar. Bu parlaklık değeri, önceden tanımlı bir karakter yoğunluk skalasına eşlenir — @%#*+=-:. gibi — görsel olarak koyu ve yoğun görünen karakterlerden (@) seyrek, açık olanlara (bir nokta ya da düz boşluk) doğru sıralanmıştır. Neredeyse siyah bir hücre @ olur, neredeyse beyaz bir hücre boşluk olur, arasındaki her şey ölçülen parlaklığıyla orantılı olarak skalanın bir noktasına yerleşir. Bu adımda renk tamamen atılır — hangi karakterin seçileceğine renk değil yalnızca parlaklık karar verir.

Burada bir incelik var: sabit genişlikli (monospace) karakterler kare değil, dikey dikdörtgendir — bu yüzden bir pikseli bir karaktere birebir eşlemek, sonucu kaynak fotoğrafa göre dikeyde gereğinden fazla uzatır. Araç bu en-boy oranı uyuşmazlığını, sütun sayısının yaklaşık iki katı kadar satır örnekleyerek düzeltir — genişlik yönünde piksel başına bir karakter, yükseklik yönünde iki piksel başına bir karakter — bu da son ASCII sanatın oranlarını, yapay biçimde uzun ve dar görünmek yerine orijinal görsele yakın tutar.

Somut bir örnek vermek gerekirse: çıktı genişliği 100 karaktere ayarlanmış bir fotoğraf, dikey 2:1 düzeltmesi uygulandıktan sonra yaklaşık 100 sütun ile 60-70 satıra iner — düz metin dosyasına, e-postaya veya terminale doğrudan yapıştırılabilecek kadar küçüktür, ama yine de tanınabilir kalır, çünkü karakter-yoğunluğu eşlemesi, tüm renk izleri kaybolmuş olsa bile orijinalin genel açık-koyu desenini korur.

Bilinmesi Gerekenler

Her şey istemci tarafında gerçekleşir: fotoğraf bellek içi bir <canvas> elemanına çizilir ve JavaScript ile piksel piksel geri okunur, bu yüzden hiçbir şey bir sunucuya iletilmez. Çıktı genişliğini ayarlayarak detay ile boyut arasında değiş tokuş yapabilirsiniz — dar bir genişlik kompakt, daha soyut bir sonuç üretir, geniş bir genişlik ise çok daha büyük bir metin bloğu pahasına daha ince detayı korur — ve sonucun koyu bir arka planda (terminal) mı yoksa açık bir arka planda (basılı bir sayfa veya beyaz belge) mı gösterileceğine göre yoğunluk skalasını ters çevirebilirsiniz.

Sıkça Sorulan Sorular

Çıktı neden gerilmiş veya sıkışmış görünüyor?

Sabit genişlikli karakterler enlerinden daha uzundur, bu yüzden araç düz bir piksel ızgarasının ihtiyaç duyacağından yaklaşık iki kat daha fazla satır örnekleyerek dengeler — bu, oranları orijinal görsele yakın tutar. Bu düzeltme olmadan, kare bir fotoğraf sabit genişlikli bir yazı tipinde render edildiğinde belirgin şekilde uzun ve dar görünürdü.

Araç görselin her bölümü için hangi karakteri kullanacağına nasıl karar veriyor?

Her örneklenen hücrenin parlaklığının ortalamasını alır ve bu değeri görsel olarak yoğun (@ veya # gibi) karakterlerden seyrek (. veya boşluk gibi) karakterlere sıralanmış sabit bir yoğunluk skalasına eşler — koyu alanlar daha yoğun görünen karakterler, açık alanlar daha seyrek karakterler alır. Bu eşlemede yalnızca parlaklık kullanılır; her bölgenin orijinal rengi hangi karakterin seçileceğini etkilemez.

Karakter skalasını ters çevirmeli miyim?

Sonucu koyu bir arka planda (terminal gibi) göstereceksiniz varsayılanı koruyun. Açık bir arka plana (beyaz belge gibi) yapıştıracaksanız, koyu alanların görsel olarak hâlâ "ağır" okunması için ters çevirin — aksi halde tonal ilişki tersine döner ve görsel orijinalin fotoğraf negatifi gibi görünebilir.

Fotoğrafımı bir yere yüklüyor mu?

Hayır — görsel tarayıcınızdan hiç çıkmaz. Yerel bir canvas öğesine çizilir ve tamamen istemci tarafında örneklenir, tıpkı sunucuya gidiş-dönüş yapmadan çalışan başka herhangi bir tarayıcı-içi görsel düzenleme aracı gibi.

Çıktı genişliğini artırmak neden daha detaylı bir sonuç veriyor?

Genişlik, görselin kaç örnekleme hücresine bölüneceğini belirler — daha fazla hücre, her birinin orijinal fotoğrafın daha küçük bir yamasını kapsaması demektir, bu yüzden parlaklık daha ince bir çözünürlükte ölçülür ve küçük detaylar (bir göz, bir yaprak kenarı, ince doku) tek düz bir karakterde ortalanıp kaybolmak yerine dönüşümden sağ çıkar.

Yorumlar

Henüz yorum yok — ilk yorumu siz yazın!

Benzer Araçlar