下载软件时,经常看到把自己的logo放在readme.txt文本文件中。
也看了网上若干用python实现的将图片转换为彩色ascii码表示的图案的代码实现。
主要步骤是将图片的像素值映射为某个ascii码。
Python代码如下:
代码语言:python代码运行次数:0复制
from PIL import Image, ImageDraw,ImageFont
import argparse
import numpy as np
import sys
import os
def ascii_img(file,sample_rate):
im = Image.open(file)
font = ImageFont.load_default()
aspect_ratio = font.getsize("x")[0] / font.getsize("x")[1]
new_im_size = np.array(
[im.size[0] * sample_rate, im.size[1] * sample_rate * aspect_ratio]
).astype(int)
im = im.resize(new_im_size)
im_color = np.array(im)
im = im.convert("L")
im = np.array(im)
symbols = np.array(list(" .-vM"))
im = (im - im.min()) / (im.max() - im.min()) * (symbols.size - 1)
asciis = symbols[im.astype(int)]
return asciis.tolist()
def writeTxt(data,path):
with open('%s.txt'%path,'w') as f:
f.write('n'.join([''.join([w for w in l]) for l in data]))
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Convert any image to ascii txt/excel.")
parser.add_argument('-f',"--file", type=str, help="input image file")
parser.add_argument('-r',"--rate", type=float, help="sample rate",default=0.3)
args = parser.parse_args()
print(args)
if not os.path.exists(args.file):
print('file not exists')
sys.exit()
path= os.path.splitext(args.file)[0]
data=ascii_img(args.file,args.rate)
writeTxt(data,path)