python如何在终端里面显示一张图片


Posted in Python onAugust 17, 2016

Linux终端里面可谓是奇妙无限,很多优秀的软件都诞生在终端里面。相较之下,Windows本身的理念和Linux就不一致,所以,你懂得。
下面,我们不妨先思考一下,如何在终端里面显示一张图片?

在终端里面显示,肯定就不像在看图软件里那样的细腻了,我们只是以字符代替某一点的像素,把大致的轮廓显示出来罢了。

编码

既然思路很清晰了,下面就来编码了。

# coding:utf-8
import sys

reload(sys)
sys.setdefaultencoding('utf8')
#  __author__ = '郭 璞'
#  __date__ = '2016/8/4'
#  __Desc__ = 一个可以将图片转换成终端字符形式的小工具

from time import *
import Image
class ImageTool():

  def __init__(self):
    print 'Initialization Completed! @',ctime()

  def getChars(self,image_pixels,image_width,image_height):
    replace_chars = 'ABCDEFGHIJKLMNO '
    terminal_chars = ''
    for h in xrange(image_height):
      for w in xrange(image_width):
        point_pixel = image_pixels[w,h]
        terminal_chars +=replace_chars[int(sum(point_pixel)/3.0/256.0*16)]
      terminal_chars+='\n'
    return terminal_chars

  def formatImage(self,imagename,image_width,image_height):
    img = Image.open(imagename,'rb')
    if img.mode != 'RGB':
      img = img.convert('RGB')
    w,h = img.size
    rw = image_width*1.0/w
    rh = image_height*1.0/h
    r = rw if rw<rh else rh
    rw = int(r*w)
    rh = int(r*h)
    img = img.resize((rw,rh),Image.ANTIALIAS)
    return img

  def entrance(self,image_path,out_width,out_height):
    image = self.formatImage(imagename=image_path,image_width=out_width,image_height=out_height)
    image_pixels = image.load()
    out_width ,out_height = image.size
    terminal_chars = self.getChars(image_pixels=image_pixels,image_width=out_width,image_height=out_height)

if __name__ == "__main__":
  tool = ImageTool()
  imagename = sys.argv[1]
  w = int(sys.argv[2])
  h = int(sys.argv[3])
  tool.entrance(imagename,w,h)

运行

运行程序很简单,我们按照命令行参数来执行即可。

python Image2Chars.py target_image_name output_width output_height

注意,图片名称是包含完整的路径的图片名称

结果
 •素材图片

python如何在终端里面显示一张图片

•终端显示效果

python如何在终端里面显示一张图片

文字类型的看起来还凑活,细腻类型的图片就不太好了。这就是因为我们转换像素的时候的粒度有点大了的缘故。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python基础教程之python消息摘要算法使用示例
Feb 10 Python
Python设计模式之单例模式实例
Apr 26 Python
python统计字符串中指定字符出现次数的方法
Apr 04 Python
Python中常用的内置方法
Jan 28 Python
python 机器学习之支持向量机非线性回归SVR模型
Jun 26 Python
python判断一个对象是否可迭代的例子
Jul 22 Python
Python2比较当前图片跟图库哪个图片相似的方法示例
Sep 28 Python
PyCharm下载和安装详细步骤
Dec 17 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
Python爬取酷狗MP3音频的步骤
Feb 26 Python
Python实现byte转integer
Jun 03 Python
动感网页相册 python编写简单文件夹内图片浏览工具
Aug 17 #Python
Python入门教程之运算符与控制流
Aug 17 #Python
python 循环while和for in简单实例
Aug 16 #Python
Python自动化测试ConfigParser模块读写配置文件
Aug 15 #Python
Python自动化测试Eclipse+Pydev 搭建开发环境
Aug 15 #Python
详解python的几种标准输出重定向方式
Aug 15 #Python
如何将python中的List转化成dictionary
Aug 15 #Python
You might like
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
PHP原生模板引擎 最简单的模板引擎
2012/04/25 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
PHP生成不重复标识符的方法
2014/11/21 PHP
Ajax PHP JavaScript MySQL实现简易无刷新在线聊天室
2016/08/17 PHP
js鼠标及对象坐标控制属性详细解析
2013/12/14 Javascript
从QQ网站中提取的纯JS省市区三级联动菜单
2013/12/25 Javascript
jquery+ajax+C#实现无刷新操作数据库数据的简单实例
2014/02/08 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
JavaScript 完成注册页面表单校验的实例
2017/08/19 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
React实现类似淘宝tab居中切换效果的示例代码
2020/06/02 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
2020/08/31 Javascript
[26:52]LGD vs EG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
pandas重新生成索引的方法
2018/11/06 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
python django 原生sql 获取数据的例子
2019/08/14 Python
python网络编程 使用UDP、TCP协议收发信息详解
2019/08/29 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
pyqt5 textEdit、lineEdit操作的示例代码
2020/08/12 Python
python基于exchange函数发送邮件过程详解
2020/11/06 Python
HTML5 Canvas实现图片缩放、翻转、颜色渐变的代码示例
2016/02/28 HTML / CSS
热能动力工程毕业生自荐信
2013/11/07 职场文书
物流业务员岗位职责
2014/02/08 职场文书
餐饮采购员岗位职责
2014/03/15 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
2014年老干部工作总结
2014/11/21 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
2014幼儿园教育教学工作总结
2014/12/17 职场文书
2015年置业顾问工作总结
2015/04/07 职场文书
新年寄语2016
2015/08/17 职场文书
家访教师心得体会
2016/01/23 职场文书
iPhone13 Pro外观确定,升级4800万镜头,4月20日发新品
2021/04/15 数码科技
Python编写冷笑话生成器
2022/04/20 Python
CSS浮动引起的高度塌陷问题
2022/08/05 HTML / CSS