ในบทความนี้ เราต้องการแปลงรูปภาพที่กำหนดให้เป็นรูปภาพฐานข้อความหรือที่เรียกว่ารูปภาพ 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')
ผลลัพธ์
การเรียกใช้โค้ดข้างต้นทำให้เราได้ผลลัพธ์ดังต่อไปนี้ -
ใส่รูปภาพ
ภาพที่ส่งออก