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的三目运算符和not in运算符使用示例
Mar 03 Python
Python中的生成器和yield详细介绍
Jan 09 Python
Python记录详细调用堆栈日志的方法
May 05 Python
基于python中staticmethod和classmethod的区别(详解)
Oct 24 Python
Python多线程处理实例详解【单进程/多进程】
Jan 30 Python
python字典一键多值实例代码分享
Jun 14 Python
pandas dataframe的合并实现(append, merge, concat)
Jun 24 Python
python3 enum模块的应用实例详解
Aug 12 Python
python里glob模块知识点总结
Jan 05 Python
pytorch交叉熵损失函数的weight参数的使用
May 24 Python
Python3接口性能测试实例代码
Jun 20 Python
 Python 中 logging 模块使用详情
Mar 03 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
php 判断数组是几维数组
2013/03/20 PHP
解析php5配置使用pdo
2013/07/03 PHP
php截取视频指定帧为图片
2016/05/16 PHP
PHP图片水印类的封装
2017/07/06 PHP
PHP _construct()函数讲解
2019/02/03 PHP
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
JavaScript使用HTML5的window.postMessage实现跨域通信例子
2014/04/11 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
微信小程序出现wx.getLocation再次授权问题的解决方法分析
2019/01/16 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
2019/05/12 Javascript
微信小程序实现图片上传
2019/05/23 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
js实现时钟定时器
2020/03/26 Javascript
Python os模块介绍
2014/11/30 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
2019/10/30 Python
Python中内建模块collections如何使用
2020/05/27 Python
Python常驻任务实现接收外界参数代码解析
2020/07/21 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
《植物妈妈有办法》教学反思
2014/02/25 职场文书
缅怀革命先烈演讲稿
2014/05/14 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
幼儿园感恩节活动总结
2015/03/24 职场文书
廉政承诺书范文
2015/04/28 职场文书
聋哑人盗窃罪辩护词
2015/05/21 职场文书
长征观后感
2015/06/09 职场文书
Go缓冲channel和非缓冲channel的区别说明
2021/04/25 Golang
nginx之内存池的实现
2022/06/28 Servers