最初是在实验楼看到的一个小实验

实验楼-Python 图片转字符画

原文是需要通过命令行运行程序

这里改为直接运行,需要固定一些参数

运行平台: Windows 
Python版本: Python3.6 
IDE: Sublime Text

1、实验准备

pillow库的安装

pip install pillow

2、实验原理

字符画是一系列字符的组合,我们可以把字符看作是比较大块的像素,一个字符能表现一种颜色,字符的种类越多,可以表现的颜色也越多,图片也会更有层次感。

最终显示的是黑白色的字符画,那么彩色的图片怎么转换成黑白的呢?这里就需要了解灰度值的概念了。

灰度值:指黑白图像中点的颜色深度,范围一般从0到255,白色为255,黑色为0,故黑白图片也称灰度图像。

我们利用下面的公式将像素的RGB值转换成灰度值:

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

用不同的字符代表不同的灰度值,字符的种类和数量可以根据自己需要的效果进行调整,最好从前往后可以看到明显的变化,最后一个字符为空格符最佳:

ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")

3、完整代码

#-*- coding:utf-8 -*-
from PIL import Image  IMG='D:\Code\python\\test1\\ascii_dora.png'  WIDTH=60
HEIGHT=45  ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")  #将256灰度映射到70个字符上
def get_char(r,g,b,alpha=256):#alpha透明度  if alpha==0:  return ' '  length=len(ascii_char)  gray=int(0.2126*r+0.7152*g+0.0722*b)#计算灰度  unit=(256.0+1)/length  return ascii_char[int(gray/unit)]#不同的灰度对应着不同的字符  #通过灰度来区分色块  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)  #写入文件with open("output.txt",'w') as f:  f.write(txt)

4、结果

python实现图片转字符画相关推荐

  1. 怎样用python生成中文字符画_如何利用Python实现图片转字符画详解

    本篇文章主要介绍了Python实现图片转字符画的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 字符画真的很有意思,将图片中的像素用字符代替,就生成了字符画. 但是像 ...

  2. 简单使用python将图片转换为字符画

    将图片转换为字符码的形式相信大家都有见过. 记得小编以前看到这些的时候是极其羡慕的,也很渴望能够实现这项功能. 然后将一副画转换为这样的字符画,发给周围的朋友炫耀. NH HN–: !;;– –;;; ...

  3. python动态图片转字符画_GIF动态图,视频?都能用Python转换成字符画图像

    字符画是一种由字母.标点或其他字符组成的图画,它产生于互联网时代,在聊天软件中使用较多,本文我们看一下如何将自己喜欢的图片转成字符画. 静态图片 首先,我们来演示将静态图片转为字符画,功能实现主要用到 ...

  4. python实现图片转字符画_Python实现图片转字符画的示例代码

    初学Python,在网上看到Python图片转字符画的教程,我也来尝试下. 首先我们要用到Python的PIL库的Image模块,PIL(Python Imaging Library)库是Python ...

  5. python动态图片转字符画_Python实现图片转字符画

    原博文 2018-05-17 13:18 − 一.任务描述   西普工程师想了解Python的命令行,以达到更好的对Python更深入的认知,打算利用argparse库实现图片转字符画的实验,结合Py ...

  6. so easy,用 Python 实现图片转字符画

    相信大家在网上经常看到有人秀出各种各样的字符画,对于这个五彩斑斓的世界来说,我们日常看到的都是一些高清的彩色的图片,偶尔来个粗糙的黑白的字符画,还是比较解乏的.喜欢记得收藏.关注.点赞. 注:文末提供 ...

  7. python动态图片转字符画_python 图片在线转字符画预览

    关于python图片转字符画,相信大家都不陌生,经常出现在 n个超有趣的python项目中. 今天我也来实践这个有趣的项目,更进一步的是把这个功能做成一个在线的网站,直接上传图片生成字符画,在线预览可 ...

  8. 用 Python 实现图片转字符画,so easy!

    作者 | 派森酱 来源 | Python技术 相信大家在网上经常看到有人秀出各种各样的字符画,对于这个五彩斑斓的世界来说,我们日常看到的都是一些高清的彩色的图片,偶尔来个粗糙的黑白的字符画,还是比较解 ...

  9. Python 实现 图片转 字符画,静态图、GIF 都能转

    源码在python学习交流q群:733089476 获取 字符画是一种由字母.标点或其他字符组成的图画,它产生于互联网时代,在聊天软件中使用较多,本文我们看一下如何将自己喜欢的图片转成字符画. 静态图 ...

  10. 【003】Python实现图片转字符画(pillow 库的使用)

    在常见的RGB(A)模式图片中,利用每个像素点的R,G,B值按照公式转换成灰度值(0~255),然后在自己创建的字符表中找到灰度值对应的字符,添加到一个文本文件中,就实现了图片转字符画(黑白). 但是 ...

最新文章

  1. Tim Berners-Lee重新分散的新Web SOLID简介
  2. 跳至下一个断点_基金经理:DeFi将推动以太坊在下一个上涨周期中涨至9000美元...
  3. python root_python在非root权限下的安装方法
  4. java的定时器用法
  5. [jQuery] jQuery.fn的init方法返回的this指的是什么对象?为什么要返回this
  6. 【LeetCode】分类刷题 之 栈和队列
  7. android数据库开发案例教程,Android Studio项目开发教程 第6章 数据库编程(30页)-原创力文档...
  8. cocos2d-x学习之添加显示文字
  9. Xcode给应用签名的设置
  10. Php程序监控邮件提醒linux,Linux ping命令实现网络监控 并邮件提醒管理员
  11. 70个小游戏平台HTML源码
  12. 360浏览器集成IE8内核
  13. 微信小程序测试点分类和总结
  14. Python 批量更改文件名、更改文件格式
  15. 点云配准ICP算法推导,SVD分解
  16. c报错pointer being freed was not allocated
  17. 获取手机mac地址工具类
  18. 洛谷题解:P1007 独木桥
  19. qq邮箱下载附件时文件名显示为乱码怎么办。
  20. godot引擎学习4

热门文章

  1. 安鑫 十年资产翻十倍 普通人是怎么做到的
  2. 小学计算机微课教案及ppt,小学数学微课程ppt
  3. mysql的数据库实例名是啥_数据库名、数据库实例名与数据库域名
  4. 服务器虚拟网卡驱动卸载,Win10安装和卸载万能网卡版驱动的方法
  5. 要计算机桌面,科幻再次要成真:你的办公桌面很快也会变成计算机
  6. “华为杯”山东理工大学第十届ACM程序设计竞赛 - 解题报告
  7. 如何让一个未知宽高的div垂直居中
  8. 联想笔记本电脑换掉原装系统后无法进BIOS不完美解决办法
  9. 【桃园恋歌】mmd镜头+动作打包下载.zip
  10. 鲁班H5页面生成工具源码