python 圖片在線轉字符畫預覽

文章連接:mp.weixin.qq.com/s/yiFOmljhy…python

關於python圖片轉字符畫,相信你們都不陌生,常常出如今 n個超有趣的python項目中。
今天我也來實踐這個有趣的項目,更進一步的是把這個功能作成一個在線的網站,直接上傳圖片生成字符畫,在線預覽可讓更多的人來體驗。
體驗網址:www.manjiexiang.cn/blog/post_i…
舉個栗子,就是這是一張圖片
git


通過轉換成的字符畫是這樣的,這個txt的文件

代碼部分:
使用PIL處理圖片,resize方法轉成指定寬高github

from PIL import Image
im = Image.open("qq.png")
im = im.resize((width, height), Image.NEAREST)
複製代碼

像素轉字符方法,將r,b,g轉化爲灰度值,而後根據灰度值的大小肯定所選字符在ascii_char中的位置。django

def get_char(r, g, b, alpha=256):
    ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
    if alpha == 0:
        return ' '
    length = len(ascii_char)
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)

    unit = (256.0 + 1) / length
    return ascii_char[int(gray / unit)]
複製代碼

處理圖片,遍歷圖片中的每個像素,依次調用get_char方法便可獲得每個像素對應的字符,而後將這些字符組合起來便可獲得所需的字符畫了,輸出到txt文件。bash

def draw():
    im = Image.open("qq.png")
    im = im.resize((width, height), Image.NEAREST)
    txt = ""
    for i in range(height):
        for j in range(width):
            txt += get_char(*im.getpixel((j, i)))
        txt += '\n'
    with open("qq.txt", 'w') as f:
        f.write(txt)
複製代碼

至此,生成字符畫的腳本完成了。
接下來就是運用到網站項目中,區別是圖片是上傳的,不是本地的路徑,這裏採用的是django的項目,圖片上傳到項目裏的路徑微信

media_root = os.path.join(settings.BASE_DIR, 'upload/')
複製代碼

本來想將生成的txt文件下載下來的,發現下載的txt文件裏面字符畫錯亂了,索性就重定向進行瀏覽,效果同樣。
post


設置的寬高能夠修改生成字符畫的大小,即上面的width、height
網站地址:
www.manjiexiang.cn/blog/post_i…

歡迎你們使用學習

腳本github地址:github.com/taixiang/py…網站

歡迎關注個人我的博客:www.manjiexiang.cn/ui

更多精彩歡迎關注微信號:春風十里不如認識你
一塊兒學習,一塊兒進步,歡迎上車,有問題隨時聯繫,一塊兒解決!!!

相關文章
相關標籤/搜索