python 圖片線上轉字元畫預覽
文章連結: ofollow,noindex" target="_blank">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/
更多精彩歡迎關注微信號:春風十里不如認識你
一起學習,一起進步,歡迎上車,有問題隨時聯絡,一起解決!!!