Bir görüntüyü ASCII sanat görüntüsüne dönüştürebilen bir komut satırı programı var mı?


19

Bir görüntüyü ascii sanatına dönüştürebilen ve daha sonra bu çıktıyı görüntü olarak kaydedebilen bir komut satırı programı (Linux için) var mı?

İhtiyacım olan şeyi göstermek için, aşağıdaki resmi ascii sanatına dönüştürmek istiyorum resim açıklamasını buraya girin

Bir programdan arzu ettiğim çıktı, bir görüntü-ascii dönüştürücüsünün çıktısının ekran görüntüsü alınarak oluşturulan çıktıya benzemelidir (çıktı saf metindir)

resim açıklamasını buraya girin

GIMP'in bir görüntüyü ascii sanatı olarak kaydetme yeteneğine sahip olduğunun farkındayım ve aview de bir görüntüyü ascii'ye dönüştürebilir. Ancak, birincisi komut satırı üzerinden yapılamaz ve ikincisi sadece çıktıyı görüntülemenize izin verir, kaydetmez (Çıktının ekran görüntüsünü almak istemiyorum).

Ayrıca libcaca'nın bir görüntüye çıktısını kaydedebileceğinin farkındayım , ancak aşağıdaki gibi sadece renkli ascii çıktıları veriyor.

resim açıklamasını buraya girin

Kaynak görüntüyü gri skalaya dönüştürerek ve ardından aşağıdaki komutla yapılır:

img2txt -W 70 -f tga input.jpg > output.tga

Komut satırı programı istemenin nedeni, görüntülerle dolu bir klasörü toplu işlemektir.


1
Ben hiç denemedim, ama convert(ImageMagick) metin boru mümkün olduğunu biliyorum . İmg2txt çıktısını ansi'ye (renkli ansi yerine) ayarlarsanız, sonucu dönüştürmek (veya başka bir uygun yazılım) için yönlendirebilirsiniz
horatio

@horatio: convert bir dosya girişi bekler ve bir kanaldan okumayı reddeder. Yine de geçici bir dosya üzerinden yapabiliriz.
Takkat

Yanıtlar:


7

Hareketsiz görüntülerden ve videolardan ascii sanatı oluşturmak için oluşturduğum bu python kodunu kullanabilirsiniz :

https://gist.github.com/lindylex/9374326

Örnek çıktı

orijinal resim açıklamasını buraya girin

ASCII sanat çıktısı ( python ascii_movie_image_ver_1.py cat.jpg 4 10) resim açıklamasını buraya girin


2
linkler gelir ve kendi siteniz olsa bile ... kodunuzu kullanarak "önce" ve "sonra" iki ekran görüntüleri ekleyebilir misiniz?
Ilan

4
@ Ilan Bir örnek ekledim ve bir halka git deposuna işaret
ettim

14

Linux çalışıyor gibi görünüyorsa, istenen sonucu elde etmek için uygulamaları kolayca birleştirebilirsiniz. Bu daha sonra toplu işleme komut dosyanıza da dahil edilebilir.

Aşağıdaki örnek , istenen sonuçları elde etmek için birçok seçeneğe sahip güçlü bir JPG'den ASCII-art dönüştürücüsü olan jp2a'yı kullanmaktadır ( kılavuz sayfasına bakınız). Ardından daha fazla kullanarak bir görüntüye çıkan ASCII metin dosyasını işlemek dönüştürmek gelen ImageMagick paketi . Yine sonuca ince ayar yapmak için birçok seçenek var. Her iki uygulamanın da dağıtımınızın depolarından edinilmesi olasıdır.

Aşağıdaki örnek komut dosyası, .jpgbir giriş JPEG görüntüsünden bir ASCII-art görüntüsü (verdiğimiz uzantıya bağlı olarak format, JPEG içindir) üretir . Kaynak 6 pt'de 160 karakter genişliğine getirilir. Bu daha sonra, dönüştürmeden önceden tanımlandığı gibi varsayılan sayfa boyutuna sığar.

#! /bin/bash
#Usage ./j2asc infile.jpg outfile.jpg

echo "converting $1 to $2"
jp2a --width=160 -i  $1 --output=tmp.txt
convert -font Courier -pointsize 6 tmp.txt $2

Bu muhtemelen istediğim çıkışa en yakın olacağım. Teşekkürler!
hellocatfood

Genişliği başka bir şey olarak belirtmenin bir yolu var mı 835px? Ascii sanatını bir 1920x1080duvar kağıdı görüntüsüne dönüştürmek istiyorum, ancak -resize 1920x1080seçeneği geçince genişlik kalır 835px.

@awashburn: görüntü boyutu karakter numarası (genişlik) ve nokta boyutuna göre belirlenir. Daha büyük bir çıktı için nokta boyutunu büyütün veya elde edilen görüntüyü ikinci bir çalışmada ölçeklendirin.
Takkat

1
MacOS kullanıcıları için: jp2a da homebrew ve çalışan aracılığıyla kullanılabilir: brew install jp2a.
k0pernikus

1
Ayrıca bazı durumlarda html doğrudan çıktıyı düşünün: jp2a --html --width=160 --chars="\'\"love" input.jpg --output=output.htm. Oluşturma için tercih ettiğiniz karakter kümesini belirtebilirsiniz (kullanmak istiyorsanız meta karakterlerden kaçmanız gerekir). Jp2a için bkz . Arch için AUR .

2

Node.js Knockout 2012'de, bir web kamerası video feed'i alan ve bir "ascii feed'i" tüküren kazanan bir başvuru vardı:

Asciigram

Asciigram sayfası

Asciigram, web kameranızı kullanarak ASCII videolar ve görüntüler oluşturmanızı sağlayan bir "üretkenlik aracı" dır. Ayrıca görüntüleri sayfaya sürükleyerek ASCII görüntüleri de oluşturabilirsiniz. [Bağlantı]

Tam olarak komut satırı değil, belki de ihtiyaçlarınız için uyarlayabilirsiniz. Resmi ascii'ye dönüştürmek için kullandıkları kütüphaneye Jscii denir .


1
Yalnızca metin çıktısı verir, görüntü değil. Artı, bu bir komut satırı programı değil
hellocatfood 28:13


1

Linux kullanıyorsunuz ve libcaca'yı zaten biliyorsunuz. Tam olarak söylediklerinizi yapan başka bir lib var (Komut satırında Ascii'ye Resim): Aalib .

Bunu yapan birçok program var. Bu hem Linux hem de pencerelerde çalışır . Harici kitaplıklar, tam kaynak kodu vb. Kullanmaz.


Aalib'in çıktısını doğrudan bir görüntüye kaydedemediğini bildiğim kadarıyla - büyük görüntüler için güvenilir olmayacak olan ekran görüntülerini içeren bazı yöntemlerin kullanılması gerekir. Aalib kullanarak bunu yapmanın bir yolu varsa, cevabınızı güncelleyebilir misiniz? Bahsettiğiniz program gerçekten iyi görünüyor. Toplu dönüştürme yapıyor mu ve bunun için bir komut satırı arayüzü var mı?
hellocatfood

1

Programın bir komut satırı arayüzü olmadığını bildiğim sürece görüntüleri metne ve sonra resimlere dönüştürüyor. Kaynak mevcuttur, böylece kendi aracınızı yazmak için kullanabilirsiniz.

Haklısın, aalib görüntüler çıkarmıyor, ancak metin çıkarıyor. Komut satırında çalışan birçok programın yanı sıra.

Linux kullanıyorsanız, ascii metnini bir bitmap'e dönüştürecek olan asciitopgm adlı bir komut satırı programı vardır. Netpbm paketinin bir parçası.

Böylece bir takım araçlar kullanabilirsiniz:

  1. aalib metni kullanarak resim çizmek için
  2. metin dosyası ile bir pgm bitmap oluşturmak için asciitopgm.
  3. (isteğe bağlı) pgm'yi istediğiniz diğer raster formatlarına dönüştürmek için convert (Imagemagick paketinden) kullanın.

Bence istediğin şeyi bu şekilde yapabilirsin.


0

Evet, jp2atemelde bir jpg görüntüsünü bir ascii sanatına dönüştüren bir araç var .

Örneğin:

$ jp2a skull.jpg

Orijinal Skull.jpg

resim açıklamasını buraya girin

Çıktı Ascii Sanatı

resim açıklamasını buraya girin

Jpg resmi kullandığınızdan emin olun. Resminiz başka bir biçimdeyse, şu şekilde değiştirebilirsiniz:

$ convert skull.png skull.jpg

1
Merhaba, GDSE'ye hoş geldiniz! Bu yinelenen bir cevap gibi görünüyor. Düzenleyerek geliştirebilirsiniz, aksi takdirde silinebilir.
meraklı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.