Heim >Backend-Entwicklung >Python-Tutorial >Python zeigt ein Bild im Terminal an

Python zeigt ein Bild im Terminal an

高洛峰
高洛峰Original
2017-02-25 11:35:443177Durchsuche

Das Linux-Terminal steckt voller Wunder und viele hervorragende Software wird im Terminal geboren. Im Vergleich dazu ist das Konzept von Windows selbst nicht mit dem von Linux vereinbar, das verstehen Sie also.

Als nächstes könnten wir uns genauso gut zuerst überlegen, wie man ein Bild im Terminal anzeigt.

Bei der Anzeige im Terminal ist es definitiv nicht so heikel wie in der Bildbetrachtungssoftware. Wir ersetzen einfach die Pixel an einer bestimmten Stelle durch Zeichen und zeigen den groben Umriss an.

Codieren

Da nun die Idee ganz klar ist, beginnen wir mit dem Codieren.


# 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)

Ausführen

Das Ausführen des Programms ist sehr einfach. Wir folgen: Führen Sie es einfach mit Befehlszeilenparametern aus.

Python Image2Chars.py Zielbildname Ausgabebreite Ausgabehöhe

Beachten Sie, dass der Bildname der Bildname einschließlich des vollständigen Pfads ist

Ergebnis
•Materialbilder

Python zeigt ein Bild im Terminal an

•Terminal-Anzeigeeffekte

Python zeigt ein Bild im Terminal an

Textartige Bilder sehen anständig und zart aus. Nicht so gut. Dies liegt daran, dass die Granularität bei der Pixelkonvertierung etwas zu groß ist.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er zum Lernen aller beiträgt. Ich hoffe auch, dass jeder die PHP-Chinesisch-Website unterstützt.

Weitere Artikel zum Thema Python, das ein Bild im Terminal anzeigt, finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn