欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何利用python實(shí)現(xiàn)圖片轉(zhuǎn)化字符畫

 更新時(shí)間:2022年06月24日 16:21:50   作者:??詩(shī)一樣的代碼????  
這篇文章主要介紹了如何利用python實(shí)現(xiàn)圖片轉(zhuǎn)化字符畫,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下

前言:

字符畫:字符畫是一系列字符的組合,我們可以把字符看作是比較大塊的像素,一個(gè)字符能表現(xiàn)一種顏色,字符的種類越多,可以表現(xiàn)的顏色也越多,圖片也會(huì)更有層次感。

如果我們想要手工繪制出字符畫,首先要有扎實(shí)的美術(shù)基礎(chǔ),其次還要花費(fèi)大量的時(shí)間和精力。但是我們可以使用Python,只需要幾行代碼,就能夠?qū)⒁粡垐D片輕而易舉地轉(zhuǎn)化為一個(gè)字符畫。

實(shí)例1

效果圖:

理論很簡(jiǎn)單,就是對(duì)圖片操作,這里需要用到PIL的python包,里面有很好用的圖像處理功能。

先打開圖片,把圖像調(diào)整大小:

img = Image.open(picPath)
img = img.resize((picW, picH))

然后讀取灰度值,再把灰度值和字符對(duì)應(yīng)起來就行。

from PIL import Image
lstChars = list("$@B%8&WM#*oahkbdpqwmZO0QLaCJUYXzczjhdhsdavunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'.") 
def oneChars(r, g, b, alpha = 256):
    global lstChars
    length = len(lstChars)
    gray = int(0.2126 * r + 0.7152 * g + 0.722 * b)
    index =length*gray
    return lstChars[index]
picPath = "C:\Users\Administrator\Desktop\\aaaaa\\aa.png"
picH = 40
picW =  80
img = Image.open(picPath)
img = img.resize((picW, picH))
txt = ""
for y in range(picH):
    for x in range(picW):
        txt += oneChars(img.getpixel((x, y)))
    txt += '\n'

print txt

實(shí)例2

下面是源碼:

# -*- coding=utf-8 -*-
from PIL import Image
IMG = 'IMG.jpg' ?# 設(shè)置圖片文件
WIDTH = 150 ?# 設(shè)置字符畫的寬
HEIGHT = 80 ?# 設(shè)置字符畫的高
OUTPUT = 'T.txt' ?# 設(shè)置存放字符畫的文本文件
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ") ?# 設(shè)置顯示的字符集
# 將256灰度映射到70個(gè)字符上
def get_char(r, g, b, alpha=256):
???# alpha為透明度
???# 判斷 alpha 值,為0表示全透明
???if alpha == 0:
???????return ' '
???# 獲取字符集的長(zhǎng)度,這里為 70
???length = len(ascii_char)
???# 將 RGB 值轉(zhuǎn)為灰度值 gray,灰度值范圍為 0-255
???gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
???# 灰度值范圍為 0-255,而字符集只有 70
???# 需要進(jìn)行如下處理才能將灰度值映射到指定的字符上
???# 防止當(dāng)灰度值為255時(shí),輸出的第70個(gè)字符超出列表索引,所以需要將(255+1)
???unit = (255.0 + 1) / length
???# 返回灰度值對(duì)應(yīng)的字符
???return ascii_char[int(gray / unit)]
if __name__ == '__main__':

???# 打開并調(diào)整圖片的寬和高
???im = Image.open(IMG)
???im = im.resize((WIDTH, HEIGHT), Image.NEAREST)

???# 初始化輸出的字符串
???txt = ""
???# 遍歷圖片中的每一行
???for i in range(HEIGHT):
???????# 遍歷該行中的每一列
???????for j in range(WIDTH):
???????????# 將 (j,i) 坐標(biāo)的 RGB 像素轉(zhuǎn)為字符后添加到 txt 字符串
???????????txt += get_char(*im.getpixel((j, i)))
???????# 遍歷完一行后需要增加換行符
???????txt += '\n'
???# 輸出到屏幕
???print(txt)
???with open(OUTPUT, 'w') as f:
???????f.write(txt)

直接粘貼即可,只需要在文件夾中導(dǎo)入一張圖片重命名為IMG.jpg。運(yùn)行結(jié)果會(huì)生成一個(gè)名為T.txt的文件。

原圖:

生成文件圖:

到此這篇關(guān)于如何利用python實(shí)現(xiàn)圖片轉(zhuǎn)化字符畫的文章就介紹到這了,更多相關(guān)python字符畫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中的序列化詳細(xì)解析

    Python中的序列化詳細(xì)解析

    這篇文章主要介紹了Python中的序列化詳細(xì)解析,序列化是指把程序中的一個(gè)類轉(zhuǎn)化成一個(gè)標(biāo)準(zhǔn)化的格式,標(biāo)準(zhǔn)化的意義是這個(gè)格式可以跨程序,跨平臺(tái)的被使用,而且保持其原有的內(nèi)容,規(guī)范,需要的朋友可以參考下
    2023-11-11
  • numpy數(shù)組合并和矩陣拼接的實(shí)現(xiàn)

    numpy數(shù)組合并和矩陣拼接的實(shí)現(xiàn)

    這篇文章主要介紹了numpy數(shù)組合并和矩陣拼接的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • 使用python實(shí)現(xiàn)數(shù)組、鏈表、隊(duì)列、棧的方法

    使用python實(shí)現(xiàn)數(shù)組、鏈表、隊(duì)列、棧的方法

    數(shù)據(jù)結(jié)構(gòu)是指相互之間存在著一種或多種關(guān)系的數(shù)據(jù)元素的集合和該集合中數(shù)據(jù)元素之間的關(guān)系組成。這篇文章主要介紹了使用python實(shí)現(xiàn)數(shù)組、鏈表、隊(duì)列、棧的相關(guān)知識(shí),需要的朋友可以參考下
    2019-12-12
  • python markdown轉(zhuǎn)html自定義實(shí)現(xiàn)工具解析

    python markdown轉(zhuǎn)html自定義實(shí)現(xiàn)工具解析

    Python-Markdown2 是一個(gè) Python 庫(kù),用于將 Markdown 文本轉(zhuǎn)換為 HTML,它是對(duì)標(biāo)準(zhǔn) Markdown 語(yǔ)法的擴(kuò)展,提供了一些額外的功能和選項(xiàng),同時(shí)還兼容標(biāo)準(zhǔn) Markdown,用它可以方便地生成漂亮的文檔、博客文章、項(xiàng)目文檔等
    2024-01-01
  • 如何用python?GUI(tkinter)寫一個(gè)鬧鈴小程序(思路詳解)

    如何用python?GUI(tkinter)寫一個(gè)鬧鈴小程序(思路詳解)

    這篇文章主要介紹了用python?GUI(tkinter)寫一個(gè)鬧鈴小程序思路詳解,涉及到tkinter一些函數(shù)控件,數(shù)據(jù)的類的封裝,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • python操作小程序云數(shù)據(jù)庫(kù)實(shí)現(xiàn)簡(jiǎn)單的增刪改查功能

    python操作小程序云數(shù)據(jù)庫(kù)實(shí)現(xiàn)簡(jiǎn)單的增刪改查功能

    這篇文章主要介紹了python操作小程序云數(shù)據(jù)庫(kù)實(shí)現(xiàn)簡(jiǎn)單的增刪改查功能,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • python編寫簡(jiǎn)單端口掃描器

    python編寫簡(jiǎn)單端口掃描器

    這篇文章主要為大家詳細(xì)介紹了python編寫簡(jiǎn)單端口掃描器,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • 詳解Django中的form庫(kù)的使用

    詳解Django中的form庫(kù)的使用

    這篇文章主要介紹了詳解Django中的form庫(kù)的使用,Django是最為著名的Python編程框架,需要的朋友可以參考下
    2015-07-07
  • Pytorch中使用ImageFolder讀取數(shù)據(jù)集時(shí)忽略特定文件

    Pytorch中使用ImageFolder讀取數(shù)據(jù)集時(shí)忽略特定文件

    這篇文章主要介紹了Pytorch中使用ImageFolder讀取數(shù)據(jù)集時(shí)忽略特定文件,具有一的參考價(jià)值需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2022-03-03
  • python使用遞歸的方式建立二叉樹

    python使用遞歸的方式建立二叉樹

    這篇文章主要介紹了python使用遞歸的方式建立二叉樹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07

最新評(píng)論