Maison > développement back-end > Tutoriel Python > Python affiche une image dans le terminal

Python affiche une image dans le terminal

高洛峰
Libérer: 2017-02-25 11:35:44
original
3172 Les gens l'ont consulté

Le terminal Linux regorge de merveilles, et de nombreux excellents logiciels naissent dans le terminal. En comparaison, le concept de Windows lui-même est incompatible avec Linux, vous comprenez donc.

Ensuite, autant y réfléchir d'abord, comment afficher une image dans le terminal ?

Lorsqu'il est affiché dans le terminal, ce n'est certainement pas aussi délicat que dans le logiciel de visualisation d'images. Nous remplaçons simplement les pixels à un certain point par des caractères et affichons le contour approximatif.

Codage

Maintenant que l'idée est très claire, commençons à coder.


# 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)
Copier après la connexion

Exécuter

Exécuter le programme est très simple, nous suivons Exécutez-le simplement avec les paramètres de ligne de commande.

python Image2Chars.py target_image_name output_width output_height

Notez que le nom de l'image est le nom de l'image incluant le chemin complet

résultat
•Images matérielles

Python affiche une image dans le terminal

•Effets d'affichage du terminal

Python affiche une image dans le terminal

Les images de type texte semblent décentes et délicates Pas si bonnes. En effet, la granularité lors de la conversion des pixels est un peu trop grande.

Ce qui précède représente l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun. J'espère également que tout le monde soutiendra le site Web PHP chinois.

Pour plus d'articles liés à l'affichage d'une image dans le terminal par Python, veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal