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设计】。

相关文章

pandas中read_csv的缺失值处理方式

今天遇到的问题是,要将一份csv数据读入dataframe,但某些列中含有NA值。对于这些列来说,NA应该作为一个有意义的level,而不是缺失值,但read_csv函数会自动将类似的缺...

对sklearn的使用之数据集的拆分与训练详解(python3.6)

研修课上讲了两个例子,融合一下。 主要演示大致的过程: 导入->拆分->训练->模型报告 以及几个重要问题: ①标签二值化 ②网格搜索法调参 ③k折交叉验证 ④增加...

Python http接口自动化测试框架实现方法示例

Python http接口自动化测试框架实现方法示例

本文实例讲述了Python http接口自动化测试框架实现方法。分享给大家供大家参考,具体如下: 一、测试需求描述 对服务后台一系列的http接口功能测试。 输入:根据接口描述构造不同的...

完美解决Python2操作中文名文件乱码的问题

完美解决Python2操作中文名文件乱码的问题

Python2默认是不支持中文的,一般我们在程序的开头加上#-*-coding:utf-8-*-来解决这个问题,但是在我用open()方法打开文件时,中文名字却显示成了乱码。 我先给大家...

Django异步任务线程池实现原理

这篇文章主要介绍了Django异步任务线程池实现原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 当数据库数据量很大时(百万级),许...