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)
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
•Effets d'affichage du 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 !