Python开发---图片像素转文本图案

2022-04-01 15:38:35 浏览数 (1)

下载软件时,经常看到把自己的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)

0 人点赞