程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Using Python to realize picture to character drawing

編輯:Python

Catalog

Preface

Principle of character drawing

Gray value and RGB

Code combat

summary

Preface

I believe you often see people show all kinds of character paintings on the Internet , For this colorful world , What we see everyday are some high-definition color pictures , Occasionally a rough black-and-white character painting , It's quite relaxing . Like to remember to collect 、 Focus on 、 give the thumbs-up .

Principle of character drawing

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 .

Gray value and RGB

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

Code combat

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 .

summary

Picture to character , The principle and idea of transformation are relatively simple , The implementation is not complicated , You can try it !

This is about using Python This is the end of the article on how to turn pictures into character pictures , More about Python Please search the previous articles of the software development network or continue to browse the relevant articles below. I hope you can support the software development network in the future !



  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved