摘要:文章鏈接關(guān)于圖片轉(zhuǎn)字符畫,相信大家都不陌生,經(jīng)常出現(xiàn)在個(gè)超有趣的項(xiàng)目中。今天我也來(lái)實(shí)踐這個(gè)有趣的項(xiàng)目,更進(jìn)一步的是把這個(gè)功能做成一個(gè)在線的網(wǎng)站,直接上傳圖片生成字符畫,在線預(yù)覽可以讓更多的人來(lái)體驗(yàn)。至此,生成字符畫的腳本完成了。
文章鏈接:https://mp.weixin.qq.com/s/yiFOmljhyalE8ssAgwo6Jw
關(guān)于python圖片轉(zhuǎn)字符畫,相信大家都不陌生,經(jīng)常出現(xiàn)在 n個(gè)超有趣的python項(xiàng)目中。
今天我也來(lái)實(shí)踐這個(gè)有趣的項(xiàng)目,更進(jìn)一步的是把這個(gè)功能做成一個(gè)在線的網(wǎng)站,直接上傳圖片生成字符畫,在線預(yù)覽可以讓更多的人來(lái)體驗(yàn)。
體驗(yàn)網(wǎng)址:https://www.manjiexiang.cn/blog/post_img
舉個(gè)栗子,就是這是一張圖片
經(jīng)過(guò)轉(zhuǎn)換成的字符畫是這樣的,這個(gè)txt的文件
代碼部分:
使用PIL處理圖片,resize方法轉(zhuǎn)成指定寬高
from PIL import Image im = Image.open("qq.png") im = im.resize((width, height), Image.NEAREST)
像素轉(zhuǎn)字符方法,將r,b,g轉(zhuǎn)化為灰度值,然后根據(jù)灰度值的大小確定所選字符在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)]
處理圖片,遍歷圖片中的每一個(gè)像素,依次調(diào)用get_char方法即可得到每一個(gè)像素對(duì)應(yīng)的字符,然后將這些字符組合起來(lái)即可得到所需的字符畫了,輸出到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 += " " with open("qq.txt", "w") as f: f.write(txt)
至此,生成字符畫的腳本完成了。
接下來(lái)就是運(yùn)用到網(wǎng)站項(xiàng)目中,區(qū)別是圖片是上傳的,不是本地的路徑,這里采用的是django的項(xiàng)目,圖片上傳到項(xiàng)目里的路徑
media_root = os.path.join(settings.BASE_DIR, "upload/")
原本想將生成的txt文件下載下來(lái)的,發(fā)現(xiàn)下載的txt文件里面字符畫錯(cuò)亂了,索性就重定向進(jìn)行瀏覽,效果一樣。
設(shè)置的寬高可以修改生成字符畫的大小,即上面的width、height
網(wǎng)站地址:
https://www.manjiexiang.cn/blog/post_img
歡迎大家使用
腳本github地址:https://github.com/taixiang/py_draw
歡迎關(guān)注我的個(gè)人博客:https://www.manjiexiang.cn/
更多精彩歡迎關(guān)注微信號(hào):春風(fēng)十里不如認(rèn)識(shí)你
一起學(xué)習(xí),一起進(jìn)步,歡迎上車,有問(wèn)題隨時(shí)聯(lián)系,一起解決?。?!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/44795.html
本文關(guān)鍵闡述了運(yùn)用Python實(shí)現(xiàn)圖片轉(zhuǎn)字符畫,要把圖片轉(zhuǎn)字符畫,必須要先界定1個(gè)字段名,用于和灰度級(jí)做投射,將照片每一個(gè)象素的RGB值轉(zhuǎn)化成1個(gè)灰度級(jí),把它相對(duì)應(yīng)的標(biāo)識(shí)符導(dǎo)出就得到了字符畫 序言 相信大家在網(wǎng)上常??吹接行┤苏宫F(xiàn)出各種各樣字符畫,對(duì)于這些色彩斑斕的全球而言,我們平時(shí)看到的就是某些超清的彩色圖片,有時(shí)候再來(lái)一個(gè)粗糙黑白字符畫,還是比較緩解疲勞的。喜愛(ài)不要忘記個(gè)人收藏、關(guān)心、...
摘要:今天要介紹的是小程序的自定義組件,類似的在做開(kāi)發(fā)的過(guò)程中會(huì)用到自定義,封裝成通用的組件可以在不同頁(yè)面里重復(fù)使用可以將復(fù)雜的頁(yè)面拆分成多個(gè)低耦合的模塊,便于代碼的維護(hù)。 文章鏈接:https://mp.weixin.qq.com/s/3xPnDwLsg7pHc_xAmS1DUQ 在前一篇文章 小程序使用之WXS中,介紹了關(guān)于 wxs 的使用,通過(guò)wxs處理數(shù)據(jù)再渲染到view層,可以簡(jiǎn)...
摘要:今天要介紹的是小程序的自定義組件,類似的在做開(kāi)發(fā)的過(guò)程中會(huì)用到自定義,封裝成通用的組件可以在不同頁(yè)面里重復(fù)使用可以將復(fù)雜的頁(yè)面拆分成多個(gè)低耦合的模塊,便于代碼的維護(hù)。 文章鏈接:https://mp.weixin.qq.com/s/3xPnDwLsg7pHc_xAmS1DUQ 在前一篇文章 小程序使用之WXS中,介紹了關(guān)于 wxs 的使用,通過(guò)wxs處理數(shù)據(jù)再渲染到view層,可以簡(jiǎn)...
摘要:一幅圖像全部轉(zhuǎn)成字符序列后,就可以直接在控制臺(tái)輸出了。讀取視頻使用了,并直接用它提供的方法轉(zhuǎn)了灰度圖,在之前的文章中也有過(guò)介紹,計(jì)算機(jī)視覺(jué)開(kāi)發(fā)利器這一步比較重要,因?yàn)橛械囊曨l分辨率很高,直接一個(gè)像素轉(zhuǎn)一個(gè)字符的話量太大,所以先縮小圖片。 今天分享的這段代碼,看起來(lái)沒(méi)啥實(shí)際用處,而且有些反潮流,因?yàn)楝F(xiàn)如今大家看視頻都追求更高分辨率的超清畫質(zhì),而我們這個(gè),是 一個(gè)超不清的視頻播放器 : 在...
摘要:灰度值的計(jì)算公式,由值計(jì)算閾值處理的方法實(shí)現(xiàn)閾值灰度計(jì)算公式去掉圖透明將圖像還原大小反鋸齒處理小圖經(jīng)過(guò)放大默認(rèn)是模糊的,將置為才能清晰顯示像素點(diǎn)。 2016 年快結(jié)束了,最后一天總要留下點(diǎn)什么。 showImg(https://segmentfault.com/img/remote/1460000008000019?w=798&h=525); 前段時(shí)間迷上像素畫,折騰了好一段時(shí)間,后來(lái)...
閱讀 655·2021-11-25 09:43
閱讀 1928·2021-11-17 09:33
閱讀 842·2021-09-07 09:58
閱讀 2076·2021-08-16 10:52
閱讀 494·2019-08-30 15:52
閱讀 1736·2019-08-30 15:43
閱讀 1015·2019-08-30 15:43
閱讀 2938·2019-08-29 16:41