Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 이미지를 ASCII 이미지로 변환

<시간/>

이 기사에서는 주어진 이미지를 ASCII 이미지라고도 하는 텍스트 기반 이미지로 변환하려고 합니다.

아래는 입력 이미지와 다양한 기능을 사용하여 이를 그레이스케일 그림으로 변환한 다음 ASCII 문자를 적용하여 이미지를 삽입하여 다른 패턴을 생성하는 Python 프로그램입니다. 마지막으로 이메일은 일련의 평면 ASCII 문자인 텍스트 기반 이미지를 제공합니다.

예시

from PIL import Image
import os
ASCII_CHARS = [ '#', '?', '%', '.', 'S', '+', '.', '*', ':', ',', '@']
def resize_image(image, new_width=25):
   (input__width, input__height) = image.size
   aspect_ratio = input__height/float(input__width)
   changed_height = int(aspect_ratio * new_width)
   changed_image = image.resize((new_width, changed_height))
   return changed_image
def make_grey(image):
   return image.convert('L')
def pixel_to_ascii(image, range_width=25):
   pixels_in_image = list(image.getdata())
   pixels_to_chars = [ASCII_CHARS[pixel_value//range_width] for pixel_value in
   pixels_in_image]
   return "".join(pixels_to_chars)
def image_to_ascii(image, new_width=25):
   image = resize_image(image)
   image = make_grey(image)
   pixels_to_chars = pixel_to_ascii(image)
   len_pixels_to_chars = len(pixels_to_chars)
   image_ascii = [pixels_to_chars[index: index + new_width] for index in
   range(0, len_pixels_to_chars, new_width)]
   return "\n".join(image_ascii)
def convert_image(image_filepath):
   # image = None
   try:
      image = Image.open(image_filepath)
   except Exception as e:
      print("Unable to open image file          {image_filepath}.".format(image_filepath=image_filepath))
   print(e)
   return
   image_ascii = image_to_ascii(image)
   f = open(os.path.splitext(image_filepath)[0]+'.txt','w')
   f.write(image_ascii)
   f.close()
convert_image('D:\\button.jpg')

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

입력 이미지

Python에서 이미지를 ASCII 이미지로 변환

출력 이미지

Python에서 이미지를 ASCII 이미지로 변환