文章連接:mp.weixin.qq.com/s/yiFOmljhy…python
關於python圖片轉字符畫,相信你們都不陌生,常常出如今 n個超有趣的python項目中。
今天我也來實踐這個有趣的項目,更進一步的是把這個功能作成一個在線的網站,直接上傳圖片生成字符畫,在線預覽可讓更多的人來體驗。
體驗網址:www.manjiexiang.cn/blog/post_i…
舉個栗子,就是這是一張圖片
git
代碼部分:
使用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
歡迎你們使用學習
腳本github地址:github.com/taixiang/py…網站
歡迎關注個人我的博客:www.manjiexiang.cn/ui
更多精彩歡迎關注微信號:春風十里不如認識你
一塊兒學習,一塊兒進步,歡迎上車,有問題隨時聯繫,一塊兒解決!!!