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实现将元祖转换成数组的方法
May 04 Python
Python面向对象编程基础解析(二)
Oct 26 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
python实现学生信息管理系统
Apr 05 Python
win10系统下Anaconda3安装配置方法图文教程
Sep 19 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
Oct 17 Python
django页面跳转问题及注意事项
Jul 18 Python
django认证系统 Authentication使用详解
Jul 22 Python
Python Numpy,mask图像的生成详解
Feb 19 Python
Python 输出详细的异常信息(traceback)方式
Apr 08 Python
python 爬取腾讯视频评论的实现步骤
Feb 18 Python
python实现自动化群控的步骤
Apr 11 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动态生成VRML网页
2006/10/09 PHP
php类
2006/11/27 PHP
php之字符串变相相减的代码
2007/03/19 PHP
php实现分页工具类分享
2014/01/09 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
JavaScript Date对象使用总结
2009/05/14 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
2013/12/16 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
javascript中undefined与null的区别
2015/08/16 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
js实现将json数组显示前台table中
2017/01/10 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
JS使用面向对象技术实现的tab选项卡效果示例
2017/02/28 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
详细讲解Python中的文件I/O操作
2015/05/24 Python
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
python程序中的线程操作 concurrent模块使用详解
2019/09/23 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
Python实现检测文件的MD5值来查找重复文件案例
2020/03/12 Python
李维斯德国官方网上商店:Levi’s德国
2016/09/10 全球购物
Invicta手表官方商店:百年制表历史的瑞士腕表品牌
2019/09/26 全球购物
土木工程专业大学毕业生求职信
2013/10/13 职场文书
中专自我鉴定范文
2013/10/16 职场文书
党员批评与自我批评发言材料
2014/10/14 职场文书
五好家庭申报材料
2014/12/20 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
2015年招商引资工作总结
2015/04/25 职场文书
2015年仓库管理工作总结
2015/05/25 职场文书
歌舞青春观后感
2015/06/10 职场文书
使用Redis实现秒杀功能的简单方法
2021/05/08 Redis
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技