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

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显示图片
mac终端运行python、python 打开新终端、mac终端退出python、终端退出python、python终端,以便于您获取更多的相关知识。

时间: 2024-09-12 05:03:43

python如何在终端里面显示一张图片_python的相关文章

css基础教程:如何让一行并列显示多张图片

许多人在用表格制作网页时,利用ASP或PHP循环输出,经常会碰到如何一行显示多张图片的问题. 下面给出一个简单的例子来实现这个效果. 大家可以举一反三.通过DIV+CSS来布局不但使得代码简洁多了,效果也达到了,要维护性更好了. [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]

Ubuntu终端里面显示路径名称太长怎么修改?

  Ubuntu终端里面显示路径名称太长怎么修改?Ubuntu默认的终端下面,进入很多层的目录后,前面那个提示符会显示完整的路径,这样命令行太长,让人觉得不舒服,现在教大家一个方法修改一下使命令行只显示当前目录的最后一级目录名,这样看起来也好,用pwd可以看到完整的路径名. 1.找到配置文件先进行备份:cp ~/.bashrc ~/.bashrc-bak,找到配置文件修改:vi ~/.bashrc,备份是为了防止配置修改出错,可以还原; 2.下面是我的/home/vagrant/.bashrc,

python从sqlite读取并显示数据的方法

  这篇文章主要介绍了python从sqlite读取并显示数据的方法,涉及Python操作SQLite数据库的读取及显示相关技巧,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 import cgi, os, sys import sqlite3 as db conn = db.connect('test.db') cursor = conn.cursor() conn.row_factory = db.Row cursor.execute("sele

java se-JPane显示多张图片设置滚动条,图片只能显示一部分,代码如下:

问题描述 JPane显示多张图片设置滚动条,图片只能显示一部分,代码如下: package com.jiqixuexi.paper.main; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import java.io.File; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPane

方法-怎么在一个JFrame的顶部显示一张图片可以随着窗口宽度改变啊?

问题描述 怎么在一个JFrame的顶部显示一张图片可以随着窗口宽度改变啊? 我把这图片用drawImage方法画在一个Panel上,再把Panel添加到JFrame的北部就成这样了!?怎么让图片有个初始高度而且能随着窗口改变宽度??求解! 解决方案 这个最好使用GridBagLayout,设置你图片所在面板的填充策略和比例系数,一句两句讲不清楚,最好你能详细说明下你这个图片的高度是多少,窗口变化的时候需要改变哪些,宽.高还是宽高都改 解决方案二: 待我百度一下GridBagLayout

debian 开机启动图片-debian开机显示一张图片,屏蔽掉原有的信息。

问题描述 debian开机显示一张图片,屏蔽掉原有的信息. 我现在用的debian7.2安装了一个基础系统,在启动的时候显示一堆字符,我想把它们屏蔽掉,然后显示一张公司的logo,具体要怎么做? 就是说一开机就是我们公司的logo,然后一直显示到公司登录界面出现.

python scrapy 在cmd下显示 no crawl 命令

问题描述 python scrapy 在cmd下显示 no crawl 命令 我的scrapy安装路径为C:program filespython2.7,已经将C:program filespython2.7和C:program filespython2.7scripts加入到环境变量中了(win7,64位系统) 我建立scrapy工程的时候只能先进入到scripts中然后用scrapy startproject demo,如果像网上很多教程说的直接CMD下scrapy startproject

用datalist 显示多张图片的问题

问题描述 <asp:DataListid="DataList3"runat="server"Height="99px"RepeatColumns="4"RepeatDirection="Horizontal"Width="548px"><ItemTemplate><asp:ImageID=img1ImageUrl='KingXcImag.aspx?id=&l

在MFC中显示多张图片,怎么实行分页显示

问题描述 在MFC中显示多张图片,怎么实行分页显示 现在在用MFC实现一个程序,要求主要如下:1. 选择一个目录,程序显示该目录下所有图像.2. 主窗口中显示多个小窗口,每个小窗口显示一幅图像.3. 小窗口尺寸可设置,也就是说,当前窗口中显示图像的数据可以设置.4. 当前窗口不能显示所有图像时分页显示.界面中设置按钮进行切换 请问,1 如何实现图片的分页显示,目前我在对话框上设有四个picture control 因为加载的有很多图片,怎么把他们在不同页面中展示,如果有源代码解释最好,不甚感激.