Python 小把戏之图片转字符串
生活随笔
收集整理的這篇文章主要介紹了
Python 小把戏之图片转字符串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python 小把戲之圖片轉字符串
#! /usr/bin/python3 # -*- coding: UTF-8 -*-from PIL import Image import argparse import os import time import ctypes#命令行輸入參數處理 # description參數可以用于插入描述腳本用途的信息,可以為空 parser = argparse.ArgumentParser(description="your script description")parser.add_argument('-f', '--file') #輸入的第一個參數 圖片名 parser.add_argument('-o', '--output') #輸入的第二個命令行參數 parser.add_argument('--width', type = int, default = 100) #輸出字符畫寬 默認 100 parser.add_argument('--height', type = int, default = 100) #輸出字符畫高 默認 100# 將變量以標簽-值的字典形式存入args字典 args = parser.parse_args()IMG = args.file WIDTH = args.width HEIGHT = args.height OUTPUT = args.outputascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ") img_num = 0 #記錄處理的圖片數量 # 將256灰度映射到70個字符上 def get_char(r,g,b,alpha = 256):if alpha == 0: #透明度return ' ' length = len(ascii_char) gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) #RGB色彩轉化為灰度unit = (256.0 + 1)/lengthreturn ascii_char[int(gray/unit)] #灰度轉化成字符#批量文件操作 def batch_rename(path):global img_num#判斷路徑是否是目錄 是否是文件if (not os.path.isdir(path) and not os.path.isfile(path)):return Falseif os.path.isfile(path):#分割出目錄與文件名file_path = os.path.split(path)#分割出文件名與文件的擴展名lists = file_path[1].split('.')#取出后綴名file_ext = lists[-1]img_ext = ['bmp', 'jpeg', 'gif', 'psd', 'png', 'jpg']if file_ext in img_ext: #確保文件是圖片im = Image.open(path) #打開圖片文件im.show() #顯示圖片im = im.resize((WIDTH,HEIGHT), Image.NEAREST) #更改圖片大小txt = ""img_num += 1for i in range(HEIGHT):for j in range(WIDTH):txt += get_char(*im.getpixel((j,i))) #獲取對應的字符print(get_char(*im.getpixel((j,i))), end = ' ') txt += '\n'print(' ')with open(lists[0] + '.txt','w') as f: #寫入txtf.write(txt)elif os.path.isdir(path):for item in os.listdir(path):batch_rename(os.path.join(path, item)) if __name__ == '__main__': if IMG: #如果傳入 -f 文件名參數 將該文件轉化為字符串img_dir = IMGelse: #如果沒有傳入 -f 文件名參數 默認將當前文件夾下所有圖片都轉化為字符串img_dir = '.'start = time.time()#字符畫輸出到文件batch_rename(img_dir)print('總共處理了 %s 張圖片, 耗時 %4.2f' % (img_num, time.time() - start ))總結
以上是生活随笔為你收集整理的Python 小把戏之图片转字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 飞思卡尔智能车iar工程常见问题
- 下一篇: Python 小把戏之下载小说