This article introduces in detail “ How to use Python Realize picture to character drawing ”, Detailed content , The steps are clear , The details are handled properly , Hope this article “ How to use Python Realize picture to character drawing ” The article can help you solve your doubts , Let's follow Xiaobian's ideas and go deeper slowly , Let's learn new knowledge together .
The principle of this character painting is also relatively simple , We can think of each character as a large pixel , A character can represent a color , The more characters , The more colors you can reflect , Character painting is more hierarchical .
The gray value refers to the depth of the color at the point of the black-and-white image , Its scope is 0-255, White is 255, Black is 0, Other colors are somewhere in between .
RGB It's red, green and blue , Other colors can be obtained through different superposition .
To convert a picture to a character drawing , You need to define a character set first , Used for mapping with gray values , The image of each pixel RGB Value is converted to a grayscale value , Output the corresponding character to get the character drawing .
RGB To gray value , There is a transformational formula :
gray = (2126 * r + 7152 * g + 722 * b) / 10000
I chose a picture at random :
My goal is to transform into the following :
According to the above conversion principle , Let's go straight to the code :
from PIL import Imagechar = list('M3NB6Q#OC?7>!:–;. ')def get_char(r, g, b, alpha=256): if alpha == 0: return ' ' grey = (2126 * r + 7152 * g + 722 * b) / 10000 char_idx = int((grey / (alpha + 1.0)) * len(char)) return char[char_idx]def write_file(out_file_name, content): with open(out_file_name, 'w') as f: f.write(content)def main(file_name="input.jpg", width=100, height=80, out_file_name='output.txt'): text = '' im = Image.open(file_name) im = im.resize((width, height), Image.NEAREST) for i in range(height): for j in range(width): text += get_char(*im.getpixel((j, i))) text += '\n' print(text) write_file(out_file_name, text)if __name__ == '__main__': main('dance.png')
The idea of procedure :
Defines an array of characters , The characters in this array can be written at will .
Resolution images , Parse each pixel in the picture into RGB value .
According to our above formula , Convert each pixel into a character in the character array .
Concatenate the characters corresponding to all pixels , The conversion is complete .
Read here , This article “ How to use Python Realize picture to character drawing ” The article has been introduced , If you want to master the knowledge points of this article, you need to practice and use it yourself to understand , If you want to know more about this article , Welcome to the Yisu cloud industry information channel .