มีโปรแกรมบรรทัดคำสั่งที่สามารถแปลงภาพเป็นภาพศิลปะ ASCII หรือไม่?


19

มีโปรแกรมบรรทัดคำสั่ง (สำหรับ Linux) ที่สามารถแปลงรูปภาพเป็น ascii art แล้วบันทึกผลลัพธ์นั้นเป็นรูปภาพเช่น jpg หรือ png หรือไม่?

เพื่อแสดงให้เห็นถึงสิ่งที่ฉันต้องการฉันต้องการแปลงภาพด้านล่างเป็นศิลปะ ASCII ป้อนคำอธิบายรูปภาพที่นี่

ผลลัพธ์ที่ฉันต้องการจากโปรแกรมควรจะคล้ายกับอันนี้ซึ่งสร้างขึ้นโดยการจับภาพหน้าจอของเอาท์พุทของตัวแปลงภาพเป็น ascii (เอาต์พุตเป็นข้อความล้วน)

ป้อนคำอธิบายรูปภาพที่นี่

ฉันทราบว่า GIMP มีความสามารถในการบันทึกภาพในรูปแบบ ascii art และaviewยังสามารถแปลงภาพเป็น ascii ได้ อย่างไรก็ตามอดีตไม่สามารถทำได้ผ่านทางบรรทัดคำสั่งและหลังเท่านั้นช่วยให้คุณดูผลลัพธ์ไม่ได้บันทึก (ฉันไม่ต้องการที่จะหันไปใช้ภาพหน้าจอของการส่งออก)

ฉันยังทราบด้วยว่าlibcacaสามารถบันทึกผลลัพธ์ไปยังรูปภาพได้ แต่มันจะแสดงเฉพาะ ascii ที่มีสีสันเช่นด้านล่าง

ป้อนคำอธิบายรูปภาพที่นี่

สร้างโดยการแปลงอิมเมจต้นฉบับเป็น greyscale จากนั้นใช้คำสั่งต่อไปนี้:

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

เหตุผลที่ต้องการโปรแกรมบรรทัดคำสั่งคือการแบตช์โฟลเดอร์ที่เต็มไปด้วยภาพ


1
ฉันไม่เคยลอง แต่ฉันรู้ว่ามันเป็นไปได้ที่จะส่งข้อความไปที่convert(ImageMagick) หากคุณตั้งค่าเอาต์พุต -f ของ img2txt เป็น ansi (แทนที่จะเป็น ansi สี) คุณสามารถ
ไพพ์

@horatio: ดูเหมือนว่าการแปลงไฟล์อินพุตและปฏิเสธที่จะอ่านจากไปป์ เราสามารถทำได้ผ่านไฟล์ชั่วคราวต่อไป
Takkat

คำตอบ:


7

คุณสามารถใช้รหัสหลามนี้ที่ฉันสร้างขึ้นเพื่อสร้าง ascii art จากภาพนิ่งและวิดีโอ:

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

ตัวอย่างผลลัพธ์

เป็นต้นฉบับ ป้อนคำอธิบายรูปภาพที่นี่

ผลงานศิลปะ ASCII ( python ascii_movie_image_ver_1.py cat.jpg 4 10) ป้อนคำอธิบายรูปภาพที่นี่


2
ลิงก์มาและไปแม้ว่ามันจะเป็นเว็บไซต์ของคุณเอง ... คุณช่วยเพิ่มภาพหน้าจอของ "ก่อน" และ "หลัง" โดยใช้รหัสของคุณได้ไหม?
Ilan

4
@Ilan ฉันได้เพิ่มตัวอย่างและชี้ไปที่พื้นที่เก็บข้อมูลสาธารณะ git
hellocatfood

14

ในกรณีที่คุณใช้ลีนุกซ์อยู่คุณอาจต่อแอพพลิเคชั่นเข้าด้วยกันเพื่อให้ได้ผลลัพธ์ที่ต้องการ สิ่งนี้สามารถรวมอยู่ในสคริปต์ประมวลผลแบทช์ของคุณ

ตัวอย่างด้านล่างใช้ประโยชน์จากjp2aซึ่งเป็นตัวแปลง JPG ที่มีประสิทธิภาพเป็น ASCII พร้อมตัวเลือกมากมายเพื่อให้ได้ผลลัพธ์ที่ต้องการ (ดู manpage) แล้วเรายังประมวลผลไฟล์ข้อความ ASCII ผลให้ภาพโดยใช้การแปลงจากชุด ImageMagick อีกครั้งมีตัวเลือกมากมายในการปรับผลลัพธ์ แอปพลิเคชันทั้งสองมีแนวโน้มที่จะพร้อมใช้งานจากที่เก็บของการแจกจ่ายของคุณ

ด้านล่างสคริปต์ตัวอย่างจะสร้างภาพ ASCII-art (รูปแบบขึ้นอยู่กับส่วนขยายที่เราให้.jpgสำหรับ JPEG) จากอินพุต JPEG-image แหล่งที่มาจะถูกแสดงถึงความกว้าง 160 ตัวอักษรที่ 6 pt นี่จะพอดีกับขนาดหน้าเริ่มต้นตามที่กำหนดไว้ล่วงหน้าจากการแปลง

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

นี่อาจใกล้เคียงที่สุดที่ฉันจะไปถึงผลลัพธ์ที่ต้องการ ขอบคุณ!
hellocatfood

มีวิธีการระบุความกว้างจะเป็นสิ่งที่อื่นแล้ว835px? ฉันต้องการที่จะแปลงศิลปะ ASCII ไปยัง1920x1080ภาพวอลล์เปเปอร์ แต่เมื่อฉันผ่านตัวเลือกที่เหลือกว้าง-resize 1920x1080 835px

@awashburn: ขนาดภาพจะถูกกำหนดโดยหมายเลขตัวอักษร (ความกว้าง) และ pointize ขยายจุดขนาดภาพให้ใหญ่ขึ้นหรือขยายภาพที่ได้ในการวิ่งครั้งที่สอง
Takkat

1
สำหรับผู้ใช้ MacOS: jp2a ยังสามารถใช้ได้ผ่านทาง homebrew brew install jp2aและทำงาน:
k0pernikus

1
ยังพิจารณาการส่งออกโดยตรงไปยัง HTML jp2a --html --width=160 --chars="\'\"love" input.jpg --output=output.htmในบางกรณี: คุณสามารถระบุชุดตัวอักษรที่คุณต้องการสำหรับการเรนเดอร์ได้ (คุณจะต้องหลีกเลี่ยงอักขระเมตาหากคุณต้องการใช้มัน) สำหรับ jp2a เห็นAURสำหรับArch

2

ใน Node.js สิ่งที่น่าพิศวง 2012 มีการส่งที่ชนะซึ่งใช้ฟีดวิดีโอเว็บแคมและคาย "ascii feed":

Asciigram

หน้า Asciigram

Asciigram เป็น "เครื่องมือเพิ่มผลผลิต" ที่ช่วยให้คุณสร้างวิดีโอและรูปภาพ ASCII โดยใช้เว็บแคมของคุณ นอกจากนี้คุณยังสามารถสร้างภาพ ASCII ที่ลากรูปภาพไปที่หน้า [ลิงก์]

มันไม่ใช่บรรทัดคำสั่ง แต่คุณอาจจะติดตั้งเพิ่มตามความต้องการของคุณ ห้องสมุดที่พวกเขาใช้ในการแปลงภาพเพื่อ ASCII เรียกว่าJscii


1
มันจะออกข้อความและไม่ใช่ภาพ นอกจากนี้ยังไม่ใช่โปรแกรมบรรทัดคำสั่ง
hellocatfood

2

ฉันใช้jp2aสำหรับศิลปะ ASCII ตรงไปตรงมาเพื่อใช้จากบรรทัดคำสั่ง:

jp2a --width=76 file.jpg

และสามารถทดสอบผลออนไลน์ได้ที่asciiconvert.com


jp2a แสดงรายการอยู่แล้วและลิงก์ของคุณไม่ได้เพิ่มอะไรเลย (ไม่สามารถเปิดได้)
usr2564301

1

ดูเหมือนว่าคุณกำลังใช้ Linux อยู่และรู้จัก libcaca อยู่แล้ว มี lib ที่ไม่ตรงกับสิ่งที่คุณพูด (ภาพเพื่อ Ascii ในบรรทัดคำสั่ง) อีกอย่างก็คือ: Aalib

มีหลายโปรแกรมที่ทำเช่นนี้ หนึ่งนี้ทำงานได้ทั้งบนลินุกซ์และหน้าต่าง ไม่ใช้ไลบรารีภายนอกมีซอร์สโค้ดแบบเต็ม ฯลฯ ...


เท่าที่ฉันทราบ Aalib ไม่สามารถบันทึกผลลัพธ์โดยตรงไปยังรูปภาพ - วิธีการบางอย่างที่เกี่ยวข้องกับภาพหน้าจอจะต้องใช้ซึ่งไม่น่าเชื่อถือสำหรับภาพขนาดใหญ่ หากมีวิธีในการใช้ Aalib คุณสามารถอัปเดตคำตอบของคุณได้ไหม? โปรแกรมที่คุณกล่าวถึงดูดีมาก มันทำการแปลงแบตช์และมีอินเตอร์เฟสบรรทัดคำสั่งหรือไม่
hellocatfood

1

ตราบใดที่ฉันทราบว่าโปรแกรมไม่มีอินเตอร์เฟสบรรทัดคำสั่ง แต่แปลงรูปภาพเป็นข้อความและเป็นรูปภาพ มีแหล่งที่มาดังนั้นคุณสามารถใช้มันเพื่อเขียนเครื่องมือของคุณเอง

คุณพูดถูกแล้ว aalib ไม่ได้ส่งออกภาพ แต่เป็นข้อความที่ส่งออก รวมถึงโปรแกรมอื่น ๆ อีกมากมายที่ทำงานบนบรรทัดคำสั่ง

หากคุณใช้ Linux มีโปรแกรมบรรทัดคำสั่งชื่อ asciitopgm ซึ่งจะแปลงข้อความ ASCII เป็นบิตแมป มันเป็นส่วนหนึ่งของแพ็คเกจ netpbm

ดังนั้นคุณสามารถใช้ชุดเครื่องมือ:

  1. aalib เพื่อวาดภาพโดยใช้ข้อความ
  2. asciitopgm เพื่อสร้าง pgm bitmap กับไฟล์ข้อความ
  3. (ไม่บังคับ) ใช้การแปลง (จากแพ็คเกจ Imagemagick) เพื่อแปลง pgm เป็นรูปแบบแรสเตอร์อื่น ๆ ที่คุณต้องการ

ฉันคิดว่าคุณสามารถทำสิ่งที่คุณต้องการด้วยวิธีนี้


0

ใช่มีเครื่องมือที่เรียกว่าjp2aโดยทั่วไปจะแปลงภาพ jpg เป็นศิลปะ ASCII

เช่น:

$ jp2a skull.jpg

ต้นฉบับ Skull.jpg

ป้อนคำอธิบายรูปภาพที่นี่

เอาท์พุท Ascii ศิลปะ

ป้อนคำอธิบายรูปภาพที่นี่

ตรวจสอบให้แน่ใจว่าใช้ภาพ jpg หากภาพของคุณอยู่ในรูปแบบอื่นคุณสามารถเปลี่ยนได้

$ convert skull.png skull.jpg

1
สวัสดีและยินดีต้อนรับสู่ GDSE! ดูเหมือนว่าคำตอบที่ซ้ำกัน คุณสามารถปรับปรุงได้โดยการแก้ไขหรืออาจถูกลบในที่สุด
อยากรู้อยากเห็น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.