python学习---50行代码实现图片转字符画1

Posted hangzhi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习---50行代码实现图片转字符画1相关的知识,希望对你有一定的参考价值。

转自:https://blog.csdn.net/mm1030533738/article/details/78447714

项目链接: https://www.shiyanlou.com/courses/370/labs/1191/document

 


 

from PIL import Image   #从PIL模块中引入Image这个类
import argparse   #引入argparse这个模块(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的列表,让图片上的灰度与字符相对应

ascii_char = list("[email protected]%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!1I;:,\"^`‘.")

#将256灰度映射到70个字符上

def get_char(r,g,b,alpha = 256):   #这个调用跟im.getpixel函数有关,这个函数是根据图片的横纵坐标,把图片解析成

                  #r,g,b,alpha(灰度)

  if alpha == 0:  #如果灰度是0,则说明这里没有图片
  return ‘ ‘
  length = len(ascii_char)  #计算这些字符的长度
  gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)  #把这些图片的RGB值转换成灰度值
  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)))  #把图片按照横纵坐标解析成RGBAlpha这几个参数,然后调用get_char

                        #函数,把对应的图片转换成灰度值,把对应值的字符存入txt中
      txt += ‘\n‘
    print(txt)  #在界面打印txt文件

  if OUTPUT:
    with open(OUTPUT,‘w‘) as f:  #文件输出
    f.write(txt)
  else:
    with open("xx.txt",‘w‘) as f:  #文件输出
    f.write(txt)









以上是关于python学习---50行代码实现图片转字符画1的主要内容,如果未能解决你的问题,请参考以下文章

转载pythonpython练手项目

Python写实用小工具-实现图片转字符画

Python图片转字符画

Python实现图片转字符画

python 图片转字符画

pythonpython图片转字符画