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中用sleep()方法操作时间的教程
May 22 Python
Python的消息队列包SnakeMQ使用初探
Jun 29 Python
Python爬取网易云音乐上评论火爆的歌曲
Jan 19 Python
python算法演练_One Rule 算法(详解)
May 17 Python
django 多数据库配置教程
May 30 Python
python 平衡二叉树实现代码示例
Jul 07 Python
python中cPickle类使用方法详解
Aug 27 Python
如何利用Python分析出微信朋友男女统计图
Jan 25 Python
python批量解压zip文件的方法
Aug 20 Python
pytorch的梯度计算以及backward方法详解
Jan 10 Python
Pycharm新手使用教程(图文详解)
Sep 17 Python
Python命令行参数定义及需要注意的地方
Nov 30 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
iis下php mail函数的sendmail配置方法(官方推荐)
2012/04/25 PHP
php中将数组转成字符串并保存到数据库中的函数代码
2013/09/29 PHP
使用php完成常见的文件上传功能(推荐)
2017/01/13 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
document.createElement()用法
2013/03/13 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
2016/10/27 Javascript
JS实现页面打印功能
2017/03/16 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
基于JavaScript实现表格滚动分页
2017/11/22 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
ES5和ES6中类的区别总结
2020/12/21 Javascript
JS实现选项卡插件的两种写法(jQuery和class)
2020/12/30 jQuery
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
python聊天程序实例代码分享
2013/11/18 Python
Python实现设置windows桌面壁纸代码分享
2015/03/28 Python
python开启多个子进程并行运行的方法
2015/04/18 Python
分析Python中设计模式之Decorator装饰器模式的要点
2016/03/02 Python
Python测试人员需要掌握的知识
2018/02/08 Python
Python基本socket通信控制操作示例
2019/01/30 Python
Python 转换RGB颜色值的示例代码
2019/10/13 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
日本著名的平价时尚女性购物网站:Fifth
2016/08/24 全球购物
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
药学专业个人的自我评价
2013/12/31 职场文书
事务机电主管工作职责
2014/02/25 职场文书
大学新闻系自荐书
2014/05/31 职场文书
党章培训心得体会
2014/09/04 职场文书
综治工作心得体会
2014/09/11 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
vue3使用vue-router的完整步骤记录
2021/06/20 Vue.js
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android
SQL Server2019数据库备份与还原脚本,数据库可批量备份
2021/11/20 SQL Server