Apakah ada program baris perintah yang dapat mengubah gambar menjadi gambar seni ASCII?


19

Apakah ada program command-line (untuk Linux) yang dapat mengkonversi gambar ke ascii art dan kemudian menyimpan output itu sebagai gambar misalnya jpg atau png?

Untuk menggambarkan apa yang saya butuhkan, saya ingin mengubah gambar di bawah ini menjadi ascii art masukkan deskripsi gambar di sini

Output yang saya inginkan dari sebuah program harus mirip dengan yang ini, yang dibuat dengan mengambil screenshot dari output dari konverter image-to-ascii (outputnya adalah teks murni)

masukkan deskripsi gambar di sini

Saya sadar bahwa GIMP memiliki kemampuan untuk menyimpan gambar sebagai seni ascii dan aview juga dapat mengkonversi gambar ke ascii. Namun, yang pertama tidak dapat dilakukan melalui baris perintah dan yang terakhir hanya memungkinkan Anda melihat output, bukan menyimpannya (saya tidak ingin mengambil screenshot dari output).

Saya juga sadar bahwa libcaca dapat menyimpan outputnya ke gambar, tetapi hanya menampilkan ascii yang berwarna-warni, seperti di bawah ini.

masukkan deskripsi gambar di sini

Dibuat dengan mengonversi gambar sumber ke skala abu-abu dan kemudian dengan perintah berikut:

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

Alasan menginginkan program perintah-baris adalah untuk batch memproses folder yang penuh dengan gambar.


1
Saya belum pernah mencobanya, tetapi saya tahu bahwa mungkin untuk mem-pipe teks ke convert(ImageMagick). Jika Anda mengatur output -f dari img2txt ke ansi (daripada ansi berwarna), Anda dapat menyalurkan hasilnya untuk dikonversi (atau perangkat lunak lain yang sesuai)
horatio

@horatio: convert tampaknya mengharapkan input file dan menolak untuk membaca dari sebuah pipa. Kita bisa melakukannya melalui file sementara.
Takkat

Jawaban:


7

Anda dapat menggunakan kode python ini yang saya buat untuk membuat ascii art dari gambar diam dan video:

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

Contoh output

Asli masukkan deskripsi gambar di sini

Output seni ASCII ( python ascii_movie_image_ver_1.py cat.jpg 4 10) masukkan deskripsi gambar di sini


2
tautan datang dan pergi, meskipun itu situs Anda sendiri ... bisakah Anda menambahkan dua tangkapan layar "sebelum" dan "setelah" menggunakan kode Anda?
Ilan

4
@Ilan saya telah menambahkan contoh dan menunjuk ke repositori git publik
hellocatfood

14

Jika Anda tampaknya menjalankan Linux, Anda dapat menjahit aplikasi dengan mudah bersama untuk mendapatkan hasil yang diinginkan. Ini kemudian dapat juga dimasukkan dalam skrip pemrosesan batch Anda.

Contoh di bawah ini menggunakan jp2a , konverter JPG ke ASCII-art yang kuat dengan banyak opsi untuk mencapai hasil yang diinginkan (lihat manual). Kami kemudian memproses lebih lanjut file teks ASCII yang dihasilkan ke gambar menggunakan konversi dari ImageMagick suite . Sekali lagi ada banyak pilihan untuk menyempurnakan hasilnya. Kedua aplikasi kemungkinan akan tersedia dari repositori distribusi Anda.

Skrip sampel di bawah ini akan menghasilkan gambar ASCII-art (format tergantung pada ekstensi yang kami berikan, .jpguntuk JPEG) dari input gambar JPEG. Sumber diterjemahkan hingga 160 karakter pada 6 pt. Ini kemudian hanya akan sesuai dengan ukuran halaman default sebagai yang telah ditentukan dari konversi.

#! /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

Ini mungkin yang paling dekat dengan hasil yang saya inginkan. Terima kasih!
hellocatfood

Apakah ada cara untuk menentukan lebar menjadi sesuatu selain itu 835px? Saya ingin mengonversi ascii art ke 1920x1080gambar wallpaper tetapi ketika saya meneruskan -resize 1920x1080opsi lebarnya tetap 835px.

@awashburn: ukuran gambar ditentukan oleh nomor karakter (lebar) dan pointsize. Perbesar pointsize untuk output yang lebih besar atau skala gambar yang dihasilkan dalam menjalankan kedua.
Takkat

1
Untuk pengguna MacOS: jp2a juga tersedia melalui homebrew dan berjalan: brew install jp2a.
k0pernikus

1
Juga mempertimbangkan output langsung ke html dalam beberapa kasus: jp2a --html --width=160 --chars="\'\"love" input.jpg --output=output.htm. Anda dapat menentukan serangkaian karakter yang Anda inginkan untuk rendering (Anda harus keluar dari karakter meta jika Anda ingin menggunakannya). Untuk jp2a lihat juga AUR untuk Arch .

2

Di Node.js Knockout 2012, ada kiriman pemenang yang mengambil umpan video webcam dan mengeluarkan "ascii feed":

Asciigram

Halaman Asciigram

Asciigram adalah "alat produktivitas" yang memungkinkan Anda membuat video dan gambar ASCII menggunakan webcam Anda. Anda juga dapat membuat gambar ASCII dengan menyeret gambar ke halaman. [Tautan]

Ini bukan baris perintah, tapi mungkin Anda bisa menyesuaikannya untuk kebutuhan Anda. Perpustakaan yang mereka gunakan untuk mengonversi gambar menjadi ascii disebut Jscii .


1
Ini hanya menampilkan teks dan bukan gambar. Plus, ini bukan program baris perintah
hellocatfood


1

Anda tampaknya Menggunakan Linux, dan sudah tahu libcaca. Ada lib lain yang melakukan persis apa yang Anda katakan (Gambar ke Ascii di baris perintah): Aalib .

Ada banyak program melakukan ini. Yang ini berfungsi baik di Linux dan windows . Tidak menggunakan perpustakaan eksternal, kode sumber lengkap tersedia, dll ...


Sejauh yang saya ketahui, Aalib tidak dapat menyimpan outputnya langsung ke gambar - beberapa metode yang melibatkan tangkapan layar perlu digunakan, yang tidak akan dapat diandalkan untuk gambar besar. Jika ada cara untuk melakukannya menggunakan Aalib, bisakah Anda memperbarui jawaban Anda? Program yang Anda sebutkan terlihat sangat bagus. Apakah itu melakukan konversi batch dan apakah ada antarmuka baris perintah untuk itu?
hellocatfood

1

Selama saya sadar bahwa program tidak memiliki antarmuka baris perintah, tetapi tidak mengkonversi gambar ke teks dan kemudian ke gambar. Sumber tersedia, sehingga Anda dapat menggunakannya untuk menulis alat Anda sendiri.

Anda benar, aalib tidak menampilkan gambar, tetapi menghasilkan teks. Serta banyak program lain yang bekerja pada command line.

Jika Anda menggunakan Linux, ada program baris perintah bernama asciitopgm yang akan mengonversi teks ascii menjadi bitmap. Itu bagian dari paket netpbm.

Jadi, Anda dapat menggunakan kombinasi alat:

  1. aalib untuk menggambar gambar menggunakan teks
  2. asciitopgm untuk membuat bitmap pgm dengan file teks.
  3. (opsional) Gunakan convert (Dari paket Imagemagick) untuk mengonversi pgm ke format raster lain yang Anda inginkan.

Saya pikir Anda dapat melakukan apa yang Anda inginkan dengan cara ini.


0

Ya, ada alat yang disebut jp2ayang pada dasarnya mengubah gambar jpg menjadi seni ascii.

Misalnya:

$ jp2a skull.jpg

Original Skull.jpg

masukkan deskripsi gambar di sini

Keluaran Ascii Art

masukkan deskripsi gambar di sini

Pastikan untuk menggunakan gambar jpg. Jika gambar Anda dalam format lain, Anda dapat mengubahnya dengan

$ convert skull.png skull.jpg

1
Halo dan selamat datang di GDSE! Ini sepertinya jawaban rangkap. Anda dapat memperbaikinya dengan mengeditnya atau akhirnya dihapus.
penasaran
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.