python如何在終端裡面顯示一張圖片,

來源:互聯網
上載者:User

python如何在終端裡面顯示一張圖片,

Linux終端裡面可謂是奇妙無限,很多優秀的軟體都誕生在終端裡面。相較之下,Windows本身的理念和Linux就不一致,所以,你懂得。
下面,我們不妨先思考一下,如何在終端裡面顯示一張圖片?

在終端裡面顯示,肯定就不像在看圖軟體裡那樣的細膩了,我們只是以字元代替某一點的像素,把大致的輪廓顯示出來罷了。

編碼

既然思路很清晰了,下面就來編碼了。

# coding:utf-8import sysreload(sys)sys.setdefaultencoding('utf8')#  __author__ = '郭 璞'#  __date__ = '2016/8/4'#  __Desc__ = 一個可以將圖片轉換成終端字元形式的小工具from time import *import Imageclass 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

注意,圖片名稱是包含完整的路徑的圖片名稱

結果
 •素材圖片

•終端顯示效果

文字類型的看起來還湊活,細膩類型的圖片就不太好了。這就是因為我們轉換像素的時候的粒度有點大了的緣故。

以上就是本文的全部內容,希望對大家的學習有所協助,也希望大家多多支援幫客之家。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.