Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การแปลงรูปภาพเป็นรูปภาพ ASCII ใน Python


ในบทความนี้ เราต้องการแปลงรูปภาพที่กำหนดให้เป็นรูปภาพฐานข้อความหรือที่เรียกว่ารูปภาพ ASCII

ด้านล่างนี้คือโปรแกรม Python ซึ่งจะนำอิมเมจอินพุตและฟังก์ชันต่างๆ มาแปลงเป็นรูปภาพระดับสีเทา จากนั้นจึงใช้อักขระ ASCII เพื่อสร้างรูปแบบต่างๆ แทรกรูปภาพ ในที่สุดอีเมลก็มาพร้อมรูปภาพแบบข้อความ นี่คือชุดอักขระ 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')

ผลลัพธ์

การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -

ใส่รูปภาพ

การแปลงรูปภาพเป็นรูปภาพ ASCII ใน Python

ภาพที่ส่งออก

การแปลงรูปภาพเป็นรูปภาพ ASCII ใน Python