Python將圖片轉(zhuǎn)換為字符畫的方法
更新時間:2020年06月16日 11:07:09 作者:行者小朱
這篇文章主要為大家詳細介紹了Python將圖片轉(zhuǎn)換為字符畫的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
最近在學習Python,看到網(wǎng)上用Python將圖片轉(zhuǎn)換成字符畫便來學習一下
題目意思是,程序讀入一個圖片,以txt格式輸出圖片對應(yīng)的字符畫,如圖所示:

以下是Python代碼:
# coding:utf-8
# 為一張圖片生成對應(yīng)的字符集圖片
from PIL import Image
import argparse
# 命令行輸入?yún)?shù)處理
parser = argparse.ArgumentParser()
parser.add_argument('file') # 輸入文件
parser.add_argument('-o', '--output') # 輸出文件
parser.add_argument('--width', type=int, default=80) # 輸出字符畫寬
parser.add_argument('--height', type=int, default=80) # 輸出字符畫高
# 獲取參數(shù)
args = parser.parse_args()
IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output
ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
# 將256灰度映射到70個字符上
def get_char(r, b, g, alpha=256):
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)]
if __name__ == '__main__':
im = Image.open(IMG)
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'
print txt
# 字符畫輸出到文件
if OUTPUT:
with open(OUTPUT,'w') as f:
f.write(txt)
else:
with open("output.txt", 'w') as f:
f.write(txt)
在輸出文件中得到如下字符集:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
相關(guān)文章
class類在python中獲取金融數(shù)據(jù)的實例方法
在本篇文章里小編給大家整理了關(guān)于class類怎樣在python中獲取金融數(shù)據(jù)的相關(guān)內(nèi)容,有需要的朋友們可以學習下。2020-12-12
Python利用lxml庫實現(xiàn)XML高級處理詳解
在Python的世界中,lxml是處理XML和HTML的一款強大且易用的庫,本文主要介紹了如何解析、創(chuàng)建、修改XML文檔,如何使用XPath查詢,以及如何解析大型XML文檔,需要的可以參考下2023-08-08
Python腳本實現(xiàn)隨機數(shù)據(jù)生成自由詳解
這篇文章主要為大家詳細介紹了Python如何通過腳本實現(xiàn)隨機數(shù)據(jù)生成自由,文中的示例代碼講解詳細,感興趣的小伙伴快跟隨小編一起學習一下吧2023-12-12

