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

 更新时间:2020年06月16日 11:07:09   作者:行者小朱  
这篇文章主要为大家详细介绍了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) 

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • class类在python中获取金融数据的实例方法

    class类在python中获取金融数据的实例方法

    在本篇文章里小编给大家整理了关于class类怎样在python中获取金融数据的相关内容,有需要的朋友们可以学习下。
    2020-12-12
  • 用Python进行简单图像识别(验证码)

    用Python进行简单图像识别(验证码)

    这篇文章主要为大家详细介绍了用Python进行简单图像识别验证码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • python递归实现链表快速倒转

    python递归实现链表快速倒转

    这篇文章主要为大家详细介绍了python递归实现链表快速倒转,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • python如何更新包

    python如何更新包

    在本篇文章里小编给大家整理的是关于python更新包的相关知识点内容,有兴趣的朋友们可以参考下。
    2020-06-06
  • 使用Python实现提取快递信息

    使用Python实现提取快递信息

    这篇文章主要为大家详细介绍了如何使用Python调用快递查询API接口,并提取出我们需要的快递信息,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-04-04
  • Python面向对象编程之类的封装

    Python面向对象编程之类的封装

    这篇文章主要介绍了Python面向对象编程之类的封装封装指属性和方法的抽象,属性的抽象又指对类的属性进行定义、隔离和保护,下面来看看文章的具体内容吧,需要的朋友可以参考一下,希望对你有所帮助
    2021-11-11
  • Python利用lxml库实现XML高级处理详解

    Python利用lxml库实现XML高级处理详解

    在Python的世界中,lxml是处理XML和HTML的一款强大且易用的库,本文主要介绍了如何解析、创建、修改XML文档,如何使用XPath查询,以及如何解析大型XML文档,需要的可以参考下
    2023-08-08
  • PyQt5实现下载进度条效果

    PyQt5实现下载进度条效果

    这篇文章主要为大家详细介绍了PyQt5实现下载进度条效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • python实现抠图给证件照换背景源码

    python实现抠图给证件照换背景源码

    这篇文章主要为大家详细介绍了python实现抠图给证件照换背景源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-08-08
  • Python脚本实现随机数据生成自由详解

    Python脚本实现随机数据生成自由详解

    这篇文章主要为大家详细介绍了Python如何通过脚本实现随机数据生成自由,文中的示例代码讲解详细,感兴趣的小伙伴快跟随小编一起学习一下吧
    2023-12-12

最新评论