python如何在终端里面显示一张图片
作者:Marksinoberg 发布时间:2023-08-23 01:34:00
标签: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
注意,图片名称是包含完整的路径的图片名称
结果
•素材图片
•终端显示效果
文字类型的看起来还凑活,细腻类型的图片就不太好了。这就是因为我们转换像素的时候的粒度有点大了的缘故。
来源:http://blog.csdn.net/marksinoberg/article/details/52116088
0
投稿
猜你喜欢
- isdigit() isalpha()用于判断字符串的类型要求1统计某个字符串中的数字数量并输出,例如字符串为“adsf
- 主旨在日常工作中,我们会经常且频繁的使用excel表格,那么我们是否可以通过python来操作excel表格,让其自动化的来代替我们的工作呢
- 目录 一,抓取情况描述二,网页分析三,程序编写 一,抓取情况描述1.抓取的页面需要登陆,以公司网页为例,登陆网址http
- 1、csv简介CSV (Comma Separated Values) ,即逗号分隔值(也称字符分隔值,因为分隔符可以不是逗号),是一种常用
- 很久没有发表文章了,最近一直在研究产品设计标准的问题,之前有发过一篇关于 Axure的教程 ,相信很多人已经学会如何使用,这次我给大家介绍一
- 本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下一.知识点总结1. 卷积神经网络出
- ChineseCalendar 是一个 Python 包,用于获取中国传统日历信息。这个包提供了中国农历、二十四节气、传统节日、黄历等信息。
- innewDropList = [9,10,11,12,22,50,51,60,61]newDB = newDB[newDB['gr
- 前言最近忙着开发x省冷链追溯系统,天天干到晚上十一点多才回到家,周末也加班,没啥时间写博客,闲下来再好好写写业务: sql语句统计出入库数据
- 1.计算机语言的基本概念 计算机语言(Computer Language) 指用于人与计算机之间的通信。2.解释型和编译型语言的区别 编译型
- 一、备份数据库 1、打开SQL企业管理器,在控制台根目录中依次点开Microsoft SQL Server
- SOLyog的下载、安装以及使用很简单。我去了相关网站下载,它只有384K字节大小。它把两个文件(一个可执行文件.exe和一个动态链接库文件
- Windows下配置Emacs来开发Python去年在网上偶然的一个机会知道了Emacs的存在,在周围前辈们都在夸赞Sublime好用的时候
- 近日,被同事问及一个产品列表的做法怎么实现?一个产品列表,每个产品列表后面跟一个button,这些button居右对齐。其实这个效果跟新闻列
- 由于这个数据库服务器存放的数据库比较多且都是小数据库,所以最初的时候是运行在windows服务器上的。前一段时间由于机房服务器要做调整,于是
- 前言:Requests简介Requests 是使用Apache2 Licensed 许可证的 HTTP 库。用 Python 编写,真正的为
- 首先创建Profile应用python manage.py startapp profilesprofiles/models.py# -*-
- 在Spring Boot JPA连接Mysql的过程中,经过 8小时后会发现断连的情况。application.properties配置如下
- 一、下载MySQL msi版本下载地址:https://dev.mysql.com/downloads/mysql/二、安装直接右击点击安装
- 本文实例讲述了Python面向对象思想与应用。分享给大家供大家参考,具体如下:面向对象思想1、面向对象的设计思想面向对象是基于万物皆对象这个