亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python怎么實現將圖片轉換為ASCII字符畫

發布時間:2022-08-16 09:45:29 來源:億速云 閱讀:180 作者:iii 欄目:開發技術

本篇內容主要講解“Python怎么實現將圖片轉換為ASCII字符畫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python怎么實現將圖片轉換為ASCII字符畫”吧!

前言

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

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

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

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

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

字符畫圖片生成

先準備好測試圖片:

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

Python怎么實現將圖片轉換為ASCII字符畫

然后我們將圖片轉換為灰度圖片并縮放到指定大小:

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

Python怎么實現將圖片轉換為ASCII字符畫

然后開始繪制字符圖片:

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

Python怎么實現將圖片轉換為ASCII字符畫

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

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)

效果:

Python怎么實現將圖片轉換為ASCII字符畫

分別是原圖和執行結果:

Python怎么實現將圖片轉換為ASCII字符畫

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

字符畫文字的生成

搞定了字符圖片的生成之后,我們考慮直接生成字符文字,但是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")

Python怎么實現將圖片轉換為ASCII字符畫

到此,相信大家對“Python怎么實現將圖片轉換為ASCII字符畫”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

伽师县| 大姚县| 兴义市| 绥滨县| 广水市| 壤塘县| 龙山县| 天长市| 焉耆| 平邑县| 静安区| 卢湾区| 温泉县| 特克斯县| 福贡县| 湾仔区| 思茅市| 白朗县| 罗源县| 亚东县| 西贡区| 新津县| 呼玛县| 翁牛特旗| 海宁市| 昌乐县| 山阴县| 云霄县| 宜章县| 重庆市| 安陆市| 安乡县| 会昌县| 南雄市| 鹤峰县| 东山县| 宜都市| 灵石县| 个旧市| 庆云县| 新昌县|