神奇!幾行代碼就能輕松把圖片轉為字符圖

碼神鎮(zhèn)樓

準備階段

首先需要安裝一個Python的圖形處理庫。終端直接輸入:

brew install Pillow

實現(xiàn)階段

不多說,直接上打碼。

from PIL import Image  # 導入Pillow的Image模塊

IMG = "/Users/##########/avart.jpg"                 # 需要處理掉的圖片路徑
filePath = "/##############/avart.txt"              # 處理結果的保存路徑
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
height = 45
width = 100


# 重點。將256灰度映射到70個字符上
def get_char(r, g, b, alpha=256):
    if alpha == 0:
        return ' '
    length = len(ascii_char)
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)  # 灰度轉換公式,??以自己

    unit = (256.0 + 1) / length                       # 比例
    inext = int(gray / unit)                          # 根據(jù)灰度求對應的index
    return ascii_char[inext]


if __name__ == '__main__':

    im = Image.open(IMG)                              # 讀取圖片
    im = im.resize((width, height), Image.NEAREST)    # 調(diào)整圖片的大小

    txt = ""
    for i in range(height):                           # 遍歷圖片的像素點,獲取每一個像素點的rgbA值
        for j in range(width):
            txt += get_char(*im.getpixel((j, i)))     # 獲得相應位置像素點的值組元(a,g,b,a)
        txt += '\n'                                   # 換行

    print txt

    # 字符圖輸出到文件
    with open(filePath, 'w') as f:                    # 輸出到指定文件
        f.write(txt)

好了,就是這么一點碼。很簡單吧。
下面看看效果圖:

源圖

效果圖

覺得還不錯的話,就拜托點個贊,加個關注哦!??

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,922評論 25 709
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,177評論 4 61
  • 一個小時前,我接到了一個陌生電話。我猶豫了一下,咬咬牙接了。 “你好,請問你是?” “聽不出來了,是吧?是不是聽不...
    半痕閱讀 487評論 1 1
  • 臺灣在歷史上曾有三次被迫與祖國大陸分離。你知道臺灣與祖國大陸分離的第一次嗎? 先從新航路開辟說起吧!15世紀末16...
    紅蓮葉閱讀 6,694評論 12 15
  • 教育不是萬能的,至少僅僅教師一方的努力是不夠的。今天突然有點悲傷,有點懷疑。自己的努力真的有用嗎? 班里倆孩子,父...
    小茜茜公主閱讀 271評論 2 6

友情鏈接更多精彩內(nèi)容