如何在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+=' '

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

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

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

结果

•素材图片

2b7208764c24ce50290b1863fa591cc7-0.png

•终端显示效果

2b7208764c24ce50290b1863fa591cc7-1.png

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

更多python在终端里面显示一张图片相关文章请关注PHP中文网!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值