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最火、R极具潜力 2017机器学习调查报告
Dec 11 Python
python3获取当前文件的上一级目录实例
Apr 26 Python
Pycharm导入Python包,模块的图文教程
Jun 13 Python
对python字典元素的添加与修改方法详解
Jul 06 Python
Python 生成 -1~1 之间的随机数矩阵方法
Aug 04 Python
django之跨表查询及添加记录的示例代码
Oct 16 Python
django 外键model的互相读取方法
Dec 15 Python
搞定这套Python爬虫面试题(面试会so easy)
Apr 03 Python
Python3使用TCP编写一个简易的文件下载器功能
May 08 Python
python GUI库图形界面开发之PyQt5中QMainWindow, QWidget以及QDialog的区别和选择
Feb 26 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
Python使用requests模块爬取百度翻译
Aug 25 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
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
使用php shell命令合并图片的代码
2011/06/23 PHP
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
php操作redis中的hash和zset类型数据的方法和代码例子
2014/07/05 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
超强多功能php绿色集成环境详解
2017/01/25 PHP
php获取今日开始时间和结束时间的方法
2017/02/27 PHP
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
JS delegate与live浅析
2013/12/21 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
理解javascript闭包
2015/12/15 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
JS实现的集合去重,交集,并集,差集功能示例
2018/03/13 Javascript
node.js自动上传ftp的脚本分享
2018/06/16 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Python实现PS滤镜碎片特效功能示例
2018/01/24 Python
Tensorflow使用支持向量机拟合线性回归
2018/09/07 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
如何完美的建立一个python项目
2020/10/09 Python
仿酷狗html5手机音乐播放器主要部分代码
2013/05/15 HTML / CSS
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
迪梵英国官方网站:Darphin英国
2017/12/06 全球购物
美国伊甸园兄弟种子公司:Eden Brothers
2018/07/01 全球购物
酒店拾金不昧表扬信
2014/01/18 职场文书
广告创意求职信
2014/03/17 职场文书
工厂采购员岗位职责
2014/04/08 职场文书
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
刑事附带民事诉讼答辩状
2015/05/22 职场文书
Python 如何实现文件自动去重
2021/06/02 Python