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控制台显示时钟的示例
Feb 24 Python
python k-近邻算法实例分享
Jun 11 Python
基于Python如何使用AIML搭建聊天机器人
Jan 27 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
Python面向对象编程基础解析(二)
Oct 26 Python
解决Python2.7中IDLE启动没有反应的问题
Nov 30 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
Feb 28 Python
python实现FTP文件传输的方法(服务器端和客户端)
Mar 20 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
May 26 Python
如何利用Python识别图片中的文字
May 31 Python
Python 忽略文件名编码的方法
Aug 01 Python
PyQt5中QSpinBox计数器的实现
Jan 18 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
星际争霸中的热键
2020/03/04 星际争霸
php查看session内容的函数
2008/08/27 PHP
php 获取远程网页内容的函数
2009/09/08 PHP
QueryPath PHP 中的jQuery
2010/04/11 PHP
PHP中如何定义和使用常量
2013/02/28 PHP
PHP入门之常量简介和系统常量
2014/05/12 PHP
PHP文件操作实例总结
2016/09/27 PHP
thinkPHP5.0框架简单配置作用域的方法
2017/03/17 PHP
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
分享一个常用的javascript静态类
2014/12/31 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
2015/03/04 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
Laydate时间组件在火狐浏览器下有多时间输入框时只能给第一个输入框赋值的解决方法
2016/08/18 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
浅谈Vue.js应用的四种AJAX请求数据模式
2017/08/30 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
2017/12/29 Javascript
关于vue属性使用和不使用冒号的区别说明
2020/10/22 Javascript
[01:06:30]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第二场 1月9日
2021/03/11 DOTA
使用python搭建Django应用程序步骤及版本冲突问题解决
2013/11/19 Python
python快速排序代码实例
2013/11/21 Python
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
python实现在windows服务中新建进程的方法
2015/06/30 Python
聊聊Python中的pypy
2018/01/12 Python
Python内建模块struct实例详解
2018/02/02 Python
详解如何设置Python环境变量?
2019/05/13 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
Flask缓存静态文件的具体方法
2020/08/02 Python
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
运动会100米广播稿
2015/08/19 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
MySQL开启事务的方式
2021/06/26 MySQL