iT邦幫忙

2021 iThome 鐵人賽

DAY 16
7
Software Development

奇怪的知識增加了!原來程式還可以這樣用?!系列 第 16

[Day16] 再也不用靠線上工具! 用Python把圖片轉成ASCII文字圖!

上一篇有跟大家提到可以自動讓程式幫你標0和1,
但是其實只要把圖片轉成灰階,要標成什麼文字符號都可以!

使用環境

程式碼

import cv2
ascii_char = list("01") # 可以自己改成想要標記的符號

WIDTH = 30 # 寬
HEIGHT = 30 # 高

def get_char(gray_value):
   length = len(ascii_char) # 根據傳進來的灰階值判斷此位置要使用哪個字元
   unit = 256.0 / length # 區分灰階範圍
   return ascii_char[int(gray_value / unit)]

if __name__ == '__main__':
   img = cv2.imread('圖片路徑', cv2.IMREAD_GRAYSCALE) # 將圖片自動轉為灰階圖片
   img = cv2.resize(img, (WIDTH, HEIGHT)) # 將灰階圖縮小成指定大小
   txt = ""
   for i in range(HEIGHT):
       for j in range(WIDTH):
           txt += get_char(img[i][j]) # 轉為指定字符
       txt += '\n'
   print(txt)

成果發表會

  • 天竺鼠車車
    https://ithelp.ithome.com.tw/upload/images/20210914/201332861A24iqsEBV.png
  • 鋼鐵人
    https://ithelp.ithome.com.tw/upload/images/20210914/20133286nmjzgV62v8.png

把程式碼第二行部分改成

ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'.")

就可以變成上面兩張圖的效果喔!
如果不更改程式碼的話就會變成上一篇只標好0和1那樣~
反正各有特色,看大家想用什麼~


上一篇
[Day15] 明天是女友的生日卻忘記準備禮物? 教你三秒做出愛心照片牆!
下一篇
[Day17] 不可以比中指! 用Python做一個AI有禮貌神器!
系列文
奇怪的知識增加了!原來程式還可以這樣用?!30
1
彭偉鎧
iT邦新手 2 級 ‧ 2021-09-16 15:45:06

這個功能可以用在哪裡? 偷看影片嗎?

lulu_meat iT邦新手 3 級 ‧ 2021-09-16 17:41:24 檢舉

除了可愛好像也沒有別的用途...

0
dscwferp
iT邦高手 1 級 ‧ 2021-09-16 20:49:22

以前(30年前)BBS最流行這個ASCII文字圖
我的青春小鳥一去不回來啊啊~~
我的初戀也是~~

0
Wilion
iT邦新手 4 級 ‧ 2021-09-16 22:07:55

好像可以跟你上一篇結合欸,加碼加碼!
/images/emoticon/emoticon35.gif

0
Marvin
iT邦新手 4 級 ‧ 2021-09-17 08:48:02

Piu piu~~

0
竹子
iT邦新手 5 級 ‧ 2021-09-17 14:30:59

很有趣而且很受用

我要留言

立即登入留言