python 圖片在線轉字符畫預覽


文章鏈接:https://mp.weixin.qq.com/s/yiFOmljhyalE8ssAgwo6Jw

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

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

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

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

像素轉字符方法,將r,b,g轉化為灰度值,然后根據灰度值的大小確定所選字符在ascii_char中的位置。

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文件。

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文件里面字符畫錯亂了,索性就重定向進行瀏覽,效果一樣。

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

歡迎大家使用

腳本github地址:https://github.com/taixiang/py_draw

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM