Python实现图片转字符画的代码实例


Posted in Python onFebruary 22, 2019

原理

1. 计算出图片颜色对应的灰度值,计算公式如下

    gray = 0.2126 * r + 0.7152 * g + 0.0722 * b

2. 根据灰度值,从字符集中获取图片中每个像素点对应的字符

代码

# !/usr/bin/env 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 = 50) #输出字符画宽
parser.add_argument('--height', type = int, default = 50) #输出字符画高
#获取参数
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;:,\"^`'. ")
def get_char(r,g,b,alpha = 256):
  """将256灰度映射到70个字符上"""
  if alpha == 0:
    return ' '
  length = len(ascii_char)
  # 计算灰度的公式
  gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
  unit = (256.0 + 1)/length
  index=int(gray/unit)
  return ascii_char[index]
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)z

运行结果

Python实现图片转字符画的代码实例

Python实现图片转字符画的代码实例

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
使用Django的模版来配合字符串翻译工作
Jul 27 Python
Python字符串拼接、截取及替换方法总结分析
Apr 13 Python
python3实现暴力穷举博客园密码
Jun 19 Python
5款非常棒的Python工具
Jan 05 Python
numpy中的ndarray方法和属性详解
May 27 Python
python如何实现复制目录到指定目录
Feb 13 Python
python 数据分析实现长宽格式的转换
May 18 Python
基于python实现模拟数据结构模型
Jun 12 Python
python中id函数运行方式
Jul 03 Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 02 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
Dec 01 Python
python blinker 信号库
May 04 Python
Python中正则表达式的用法总结
Feb 22 #Python
python ddt数据驱动最简实例代码
Feb 22 #Python
Flask框架踩坑之ajax跨域请求实现
Feb 22 #Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
Feb 22 #Python
pandas修改DataFrame列名的实现方法
Feb 22 #Python
pyhanlp安装介绍和简单应用
Feb 22 #Python
Python3.7 dataclass使用指南小结
Feb 22 #Python
You might like
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
用文本作数据处理
2006/10/09 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
2015/02/08 PHP
php的4种常见运行方式
2015/03/20 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
[原创]php使用curl判断网页404(不存在)的方法
2016/06/23 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
jQuery操作input type=radio的实现代码
2012/06/14 Javascript
jquery实现动态改变div宽度和高度
2015/05/08 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
深入理解关于javascript中apply()和call()方法的区别
2016/04/12 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
js处理包含中文的字符串实例
2017/10/11 Javascript
Vue中android4.4不兼容问题的解决方法
2018/09/04 Javascript
详解python时间模块中的datetime模块
2016/01/13 Python
利用Python获取赶集网招聘信息前篇
2016/04/18 Python
简单谈谈python的反射机制
2016/06/28 Python
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
Python快速排序算法实例分析
2017/11/29 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
Python在groupby分组后提取指定位置记录方法
2018/04/20 Python
Django rest framework工具包简单用法示例
2018/07/20 Python
python 将大文件切分为多个小文件的实例
2019/01/14 Python
Python I/O与进程的详细讲解
2019/03/08 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
2019/11/11 Python
python图片验证码识别最新模块muggle_ocr的示例代码
2020/07/03 Python
暇步士官网:Hush Puppies
2016/09/22 全球购物
澳大利亚首个在线预订旅游网站:Wotif
2017/07/19 全球购物
Etam艾格英国官网:法国著名女装品牌
2019/04/15 全球购物
毕业生的自我鉴定
2013/10/29 职场文书
公务员群众路线心得体会
2014/11/03 职场文书
房屋租房协议书范本
2014/12/04 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
2015年反洗钱工作总结
2015/04/25 职场文书
centos8安装MongoDB的详细过程
2021/10/24 MongoDB