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 相关文章推荐
python自动格式化json文件的方法
Mar 11 Python
python 的列表遍历删除实现代码
Apr 12 Python
python实现批量解析邮件并下载附件
Jun 19 Python
python批量赋值操作实例
Oct 22 Python
Python高斯消除矩阵
Jan 02 Python
Python简单基础小程序的实例代码
Apr 28 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
python3多线程知识点总结
Sep 26 Python
关于Flask项目无法使用公网IP访问的解决方式
Nov 19 Python
细说NumPy数组的四种乘法的使用
Dec 18 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
Feb 02 Python
python和anaconda的区别
May 06 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
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
PHP面向对象精要总结
2014/11/07 PHP
php中Socket创建与监听实现方法
2015/01/05 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
PHP+HTML+JavaScript+Css实现简单爬虫开发
2016/03/28 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
简单掌握JavaScript中const声明常量与变量的用法
2016/05/21 Javascript
工厂模式在JS中的实践
2017/01/18 Javascript
js Dom实现换肤效果
2017/10/21 Javascript
JS 实现缓存算法的示例(FIFO/LRU)
2018/03/20 Javascript
vue 自定义指令自动获取文本框焦点的方法
2018/08/25 Javascript
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
图解javascript作用域链
2019/05/27 Javascript
[01:01:42]Secret vs Optic Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python3随机漫步生成数据并绘制
2018/08/27 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
Lookfantastic葡萄牙官方网站:欧洲第一大化妆品零售商
2018/03/17 全球购物
介绍一下Python中webbrowser的用法
2013/05/07 面试题
酒店执行总经理岗位职责
2013/12/15 职场文书
仓库保管员岗位职责
2013/12/20 职场文书
美容院考勤制度
2014/01/30 职场文书
继承权公证书
2014/04/09 职场文书
学校创先争优活动总结
2014/08/28 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
大学运动会加油稿
2015/07/22 职场文书
2016党员党章学习心得体会
2016/01/14 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书