最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)將圖片轉(zhuǎn)換為ASCII字符畫

 更新時間:2022年08月15日 16:48:07   作者:小小明-代碼實體  
這篇文章主要介紹了Python實現(xiàn)將圖片轉(zhuǎn)換為ASCII字符畫,要將圖片轉(zhuǎn)換為字符圖其實很簡單,我們首先將圖片轉(zhuǎn)換為灰度圖像,這樣圖片的每個像素點的顏色值都是0到255,然后我們選用一些在文字矩形框內(nèi)占用面積從大到小的ASCII碼字符

前言

要將圖片轉(zhuǎn)換為字符圖其實很簡單,我們首先將圖片轉(zhuǎn)換為灰度圖像,這樣圖片的每個像素點的顏色值都是0到255,然后我們選用一些在文字矩形框內(nèi)占用面積從大到小的ASCII碼字符,我經(jīng)過一番觀察選擇了如下字符:

ascii_chars = "MNHQ$OC67+>!:-. "

很明顯M的筆畫比N多,縮小到足夠小之后就會體現(xiàn)出M的顏色比N更深,大家若能夠找到更能夠體現(xiàn)這種特征的字符,也可以替換。

然后我們只需要將圖片的目標(biāo)像素點映射到這批字符上,代碼大概就是:

ascii_chars[color*(len(ascii_chars)-1)//255]

字符畫圖片生成

先準(zhǔn)備好測試圖片:

from PIL import Image
img = Image.open('test.jpg')
img

然后我們將圖片轉(zhuǎn)換為灰度圖片并縮放到指定大?。?/strong>

new_w = 100
w, h = img.size
img = img.convert("L").resize((new_w, int(new_w*h//w)))
w, h = img.size
data = img.load()
img

然后開始繪制字符圖片:

from PIL import ImageFont, ImageDraw

f_size = 3
img_new = Image.new('L', (w * f_size, h * f_size), 255)
f = ImageFont.truetype('arial.ttf', f_size)
d = ImageDraw.Draw(img_new)
n = len(ascii_chars)-1
for y in range(h):
    for x in range(w):
        char = ascii_chars[data[x, y]*n//255]
        d.text((x * f_size, y * f_size), char, fill=0, font=f)
img_new

個人感覺效果還是不錯的,我們可以把上述邏輯封裝成一個方法:

from PIL import Image, ImageFont, ImageDraw
def img2charImg(filename, new_wight, font_size):
    "小小明:https://blog.csdn.net/as604049322"
    ascii_chars = "MNHQ$OC67+>!:-. "
    img = Image.open(filename)
    w, h = img.size
    img = img.convert("L").resize((new_wight, int(new_wight*h//w)))
    w, h = img.size
    data = img.load()
    img_new = Image.new('L', (w * font_size, h * font_size), 255)
    f = ImageFont.truetype('arial.ttf', font_size)
    d = ImageDraw.Draw(img_new)
    n = len(ascii_chars)-1
    for y in range(h):
        for x in range(w):
            char = ascii_chars[data[x, y]*n//255]
            d.text((x * font_size, y * font_size), char, fill=0, font=f)
    return img_new

測試一下:

img2charImg("love.jpg", 200, 2)

效果:

分別是原圖和執(zhí)行結(jié)果:

我們可以通過第二個參數(shù)調(diào)大字符程度,最終圖片的寬度是兩個參數(shù)相乘。

字符畫文字的生成

搞定了字符圖片的生成之后,我們考慮直接生成字符文字,但是ASCII碼字符在顯示時,往往寬度是高度的一半,所以我們在生成字符畫文字時需要事先將圖片高度壓扁一半。

完整代碼如下:

from PIL import Image

def img2charTxt(filename, new_wight, txtname):
    "小小明:https://blog.csdn.net/as604049322"
    ascii_chars = "MNHQ$OC67+>!:-. "
    img = Image.open(filename)
    img = img.convert("L")
    w, h = img.size
    img = img.resize((new_wight*2, int(new_wight*h//w)))
    w, h = img.size
    data = img.load()
    result = []
    n = len(ascii_chars)-1
    for y in range(h):
        line = "".join(ascii_chars[data[x, y]*n//255] for x in range(w))
        line += "\n"
        result.append(line)
    with open(txtname, "w") as f:
        f.writelines(result)

測試一下:

img2charTxt("test.jpg", 100, "image.txt")

可以看到在文本編輯器中的顯示效果是相當(dāng)不錯的。

到此這篇關(guān)于Python實現(xiàn)將圖片轉(zhuǎn)換為ASCII字符畫的文章就介紹到這了,更多相關(guān)Python圖片轉(zhuǎn)換ASCII字符畫內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中選擇排序的實現(xiàn)與優(yōu)化

    Python中選擇排序的實現(xiàn)與優(yōu)化

    選擇排序(Selection?Sort)是一種簡單但有效的排序算法,本文將詳細(xì)介紹選擇排序算法的原理和實現(xiàn),并提供相關(guān)的Python代碼示例,需要的可以參考一下
    2023-06-06
  • python內(nèi)置模塊OS?實現(xiàn)SHELL端文件處理器

    python內(nèi)置模塊OS?實現(xiàn)SHELL端文件處理器

    這篇文章主要介紹了python內(nèi)置模塊OS實現(xiàn)SHELL端文件處理器,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09
  • python自動格式化json文件的方法

    python自動格式化json文件的方法

    這篇文章主要介紹了python自動格式化json文件的方法,可實現(xiàn)將json文件格式化的功能,非常具有實用價值,需要的朋友可以參考下
    2015-03-03
  • python多線程編程中的join函數(shù)使用心得

    python多線程編程中的join函數(shù)使用心得

    這篇文章主要介紹了python多線程編程中的join函數(shù)使用心得,本文先是給出了join函數(shù)使用例子,并對join函數(shù)的使用作了總結(jié),需要的朋友可以參考下
    2014-09-09
  • Python常見讀寫文件操作實例總結(jié)【文本、json、csv、pdf等】

    Python常見讀寫文件操作實例總結(jié)【文本、json、csv、pdf等】

    這篇文章主要介紹了Python常見讀寫文件操作,結(jié)合實例形式總結(jié)分析了Python常見的各種文件讀寫操作,包括文本、json、csv、pdf等文件的讀寫與相關(guān)注意事項,需要的朋友可以參考下
    2019-04-04
  • python通過opencv實現(xiàn)批量剪切圖片

    python通過opencv實現(xiàn)批量剪切圖片

    這篇文章主要介紹了python通過opencv實現(xiàn)批量剪切圖片,還是挺不錯的,這里分享個大家,供需要的朋友參考。
    2017-11-11
  • Python pip安裝如何切換國內(nèi)源

    Python pip安裝如何切換國內(nèi)源

    在Python開發(fā)中,pip是一個非常重要的工具,它允許我們安裝和管理Python包,本文將介紹如何切換pip的國內(nèi)源,并推薦幾個常用的國內(nèi)源,感興趣的朋友一起看看吧
    2024-04-04
  • 如何解決requests,已經(jīng)安裝卻無法import問題

    如何解決requests,已經(jīng)安裝卻無法import問題

    這篇文章主要介紹了如何解決requests,已經(jīng)安裝卻無法import問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python實現(xiàn)單例模式的五種寫法總結(jié)

    Python實現(xiàn)單例模式的五種寫法總結(jié)

    單例模式(Singleton Pattern) 是一種常用的軟件設(shè)計模式,該模式的主要目的是確保某一個類只有一個實例存在。本文為大家整理了五種Python實現(xiàn)單例模式的寫法,需要的可以參考一下
    2022-08-08
  • 對tensorflow 中tile函數(shù)的使用詳解

    對tensorflow 中tile函數(shù)的使用詳解

    今天小編就為大家分享一篇對tensorflow 中tile函數(shù)的使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評論

石首市| 双江| 竹山县| 施甸县| 左贡县| 镇巴县| 淳化县| 油尖旺区| 昔阳县| 镇宁| 皮山县| 临潭县| 通海县| 惠东县| 长沙县| 根河市| 拉萨市| 兴海县| 湟源县| 濮阳市| 宁蒗| 郁南县| 逊克县| 海晏县| 张家界市| 莱阳市| 教育| 博爱县| 彰化县| 长葛市| 新晃| 当涂县| 清水县| 抚松县| 丹江口市| 凉山| 崇义县| 临夏县| 密山市| 莱州市| 柘城县|