[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那样~
反正各有特色,看大家想用什麽~


<<:  Day2 让我们开始吧

>>:  [Day 15] 针对网页的单元测试(一)

Day 1 - 初探 stimulus

stimulus 这套框架主要在尽可能避免繁重的工作。为了能够让大量的介面互动维持在单纯的 请求-回...

[前端/JavaScript] 实作汇出excel下载按钮的超好用套件:ExcelJS(下)- 用React汇出excel (export excel)

有关於ExcelJS这个套件的教学与说明,请先看我的上一篇文章: [前端/ES6] 实作汇出exce...

#14 JS: create a calculator by prompt()

Final Calculator Design <!DOCTYPE html> <...

Python入门 Day 6 : # While True的用法

while 是循环结构(while一定要小写),while 後面搭配布林值(boolean)并用,F...

Day22 - 错误捕捉、全域 CSS、共用 Layout,就用 _app.tsx 来搞定吧!

_app.tsx 可以做什麽? App 跟 Document 皆是 Next.js 的进入点,而 D...