>  기사  >  백엔드 개발  >  Python은 터미널에 그림을 표시합니다.

Python은 터미널에 그림을 표시합니다.

高洛峰
高洛峰원래의
2017-02-25 11:35:443092검색

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 출력_폭 출력_높이

이미지 이름은 전체 경로

결과 •소재 사진

Python은 터미널에 그림을 표시합니다.

•단말기 디스플레이 효과

Python은 터미널에 그림을 표시합니다.

텍스트 형식의 사진은 깔끔하고 섬세해 보입니다. 별로 좋지 않습니다. 이는 픽셀을 변환할 때의 세분성이 너무 크기 때문입니다.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되기를 바랍니다.


파이썬이 터미널에 그림을 표시하는 것과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.