Python将图片转换为字符画的方法

yipeiwu_com6年前Python基础

最近在学习Python,看到网上用Python将图片转换成字符画便来学习一下

题目意思是,程序读入一个图片,以txt格式输出图片对应的字符画,如图所示:

以下是Python代码:

# coding:utf-8 
 
# 为一张图片生成对应的字符集图片 
 
from PIL import Image 
import argparse 
 
# 命令行输入参数处理 
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) # 输出字符画高 
 
# 获取参数 
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) 

在输出文件中得到如下字符集:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python dataframe NaN处理方式

将dataframe中的NaN替换成希望的值 import pandas as pd df1 = pd.DataFrame([{'col1':'a', 'col2':1}, {'co...

python DataFrame 修改列的顺序实例

假设我有一个DataFrame(df)如下: name age id mike 10 1 tony 14 2 lee 20 3 现在我想把id 放到最前面,变成: id nam...

浅谈Python批处理文件夹中的txt文件

浅谈Python批处理文件夹中的txt文件

1 文件处理形式    近期由于处理大量数据,所以对于采用python进行处理文件的一些操作也打算整理一下;接下来主要说一下如何处理目录下的一系列txt文件...

Python中str is not callable问题详解及解决办法

Python中str is not callable问题详解及解决办法 问题提出:    在Python的代码,在运行过程中,碰到了一个错误信息:  &nb...

pycharm 使用心得(八)如何调用另一文件中的函数

实现步骤: 1. PyCharm, IDE有个Project setting图标,是给run图标做配置的,配置run file为myfile.py2.复制代码 代码如下:# ------...