前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python开发---图片像素转文本图案

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

原创
作者头像
MiaoGIS
发布2022-04-01 15:38:35
6030
发布2022-04-01 15:38:35
举报
文章被收录于专栏:Python in AI-IOT

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档