Computer >> Máy Tính >  >> Lập trình >> Python

Chuyển đổi hình ảnh sang hình ảnh ASCII bằng Python

Trong bài viết này, chúng tôi muốn chuyển đổi một hình ảnh nhất định thành hình ảnh cơ sở văn bản còn được gọi là hình ảnh ASCII.

Dưới đây là chương trình Python sẽ lấy một hình ảnh đầu vào và các chức năng khác nhau để chuyển đổi chúng thành hình ảnh thang độ xám và sau đó áp dụng các ký tự ASCII để tạo các mẫu khác nhau chèn hình ảnh. Cuối cùng, email có hình ảnh dựa trên văn bản, đây là một chuỗi các ký tự ASCII mặt phẳng.

Ví dụ

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

Đầu ra

Chạy đoạn mã trên cho chúng ta kết quả sau -

Hình ảnh đầu vào

Chuyển đổi hình ảnh sang hình ảnh ASCII bằng Python

Hình ảnh đầu ra

Chuyển đổi hình ảnh sang hình ảnh ASCII bằng Python