Python 利用PIL将图片转为字符

来源:互联网 发布:中银淘宝卡年费逾期 编辑:程序博客网 时间:2024/05/16 15:56

Python 利用PIL将图片转为字符

PIL(Python Imaging Library)是Python语言的一个图像处理库,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,而且API非常简单易用,可以用它实现很多图像处理功能。

这里介绍一种用PIL将图片转换为字符的方法。

实现的效果为:

原图像:

原图像

转换后的字符:

CCO$Q$C?COOO?COHNHMMMNM$$MN$C?O$?>77777::::::::::-CCO$Q$CCCCCCQ$QMNHMNMNH7$H??COHQ7>77777!::::::::--CCO$QOCCCCCOHH$QNNMNNHH$OCCQQ$$!>777777!:::::::---COO$QOCCCCCOQHQQQHH$OC?!>?C$$??!7777777!::::::::::COO$QOCCCCCOHQQQCOO>>>!-!>>7C????77777?!::::::::::COO$$OCCCCCOQC7????C?>!::!O??C?77??777?>::::::::--COOQ$OCCCCC??>!>OO7C$!>!!:C?>$H?>77777?>:::::::---?OOQ$OCCCC?7>!:?HC!7C!>:::>7>7NO:>77777>:::::::::-COOQ$OCCC77>>!:?Q>!>>!----:>!:?7:!>>7>7>:::::::::-COOQ$OCC7>!>>::>?!>>!:-----!>!!>!:>7>>>7!:::::::--COOQ$O?>!!!>7!!>>>7?!------!7>>>7OHQO7!!7!::::::--COOQ$O7!::>OHQC77777!:-----:>>>?HHQHNH7!>7!:::::::CO$Q$?!!:7QNNNNQC7?7>:-----:>>?QQ$QQ$H$77>>!::::::OOOQC>>!!QNQHHQHHC??>::-----!>OQQHNNHOQ?CC7!!:::--OO$O>>7?OHONHNNHHHC7!:---;---:$QQHHHN$Q7>?C?!:::--OOO>>OQCOQQNHNNNQNO!:--;;;;;--$QQHHHHHH>::7$7!::--OO??QH?!?HHHHHHHHNO:------;;--?$QHHNNQ7:!>>$O>::--OO?$HC!!!ONNHHNHQQ>::------;---:!>77>--:>77$Q7!:--OOOHQ?7>>>7?COC>!!-::-::-------;;;;.;;-!>7?COO!:--OOOQQO?OCC?>!::--;-:::!::::!:-;;-;-;;--:!>?7C$7:--OCQO$QO$O?7>!--;;---:!!!!!!!!-;;;----;-:!!??CQC!-:OOHOCQ$OC77!:------:7777777?7>-;-------:!7?77CO77CO$HOO$QOC?7!::::---->OQO77C$?-;;;--:::::!>>>>7C$$$O$$$CC$$$C7>!!!::---;>?C7777!------::::::!>>>>COC?$O?777?CO?7>!!:-:!!!!!>>??7>!:::!::-::::!>7>>:7?77O?>>7777??7>>!:!!!!!!>!!7?>>!!!!!!!:::!!!7C?>!>7>>O7!>7?$$O?>>!::!!>>!>>>>7?7>>!!>!!!::::!!?OOC????CC?>7C$Q$?7>!!!!!!!>>>>>>7?7>>>>7>!::::!::!?OO$$C??OC7?$Q$OC7!!!:!!!!7777>7?C?7>77>!!!::::!!!!>7C?7>>$O$$OC?7>>!!::!:!!>>777??????7>!!!!!::::!!!>>77777?CO???>7>!!!:::!!!!>>>>7777>>>!!:!:::::::!!!777777??77>>>>!!:::::!!!!!!!>>>>>>!!!::::!::!!::!>?>>77>7777>!!!::::!!!!!!:!!!!!>!!!!!!::::::::!!!!>>>777!?7!>>>!:!!!!!!!!!:!!!!!!!!:!!::::::::::::!!!!>77!:?>-->7>!:!!!:::!!::!!!!!:!:::::::::::!:::!!:>7>!::7!.-:>!::!!::!!!:::!::!::::::::::::::!:::!:-!!:-!>?-.;-:::::::!!:!!!:::::::!:::::::::::::::!:-----:!>;.;---::::::::!!:::::::::::::::::::::::!!:--:---:!.;-----::::::::::::::::::::::::::::::::!!:---::::-.;--:--:::::::::!::::::::::::::::::::!!!!::--::::-;--::---::::::!:::::::::::::::::::::!!!!!!:--:::::;--:::::::::::::::::::!!!!::!!::!!!!!!!!!!:--:::!;;-:::!!!::!!!!!!!!!!!!!!>!!!!:!!!!!!!!!!!!::::!>>;;-:::!!!!!!!!!!!!!!!!!!!!!!!!:!!!!!!!!!!!!:::>>77;;-:::!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!::!7777;;-::!!!!!>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:!7>77;;-:!!!!!>!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:!????;;-::!!!!!!!!!!!!!:!!!!!!!!!!!!!!!!!!!!!!!!!:>?C$Q;;-:::!!!!!!!!!!!!:!!!!!!!!!!!!!!!!!!!!!!!!!:!?O$Q

Python程序代码:

#!/usr/bin/env python# -*- coding: utf-8 -*-import sysfrom PIL import Imagedef image_to_text(pixels, width, height):    color = "MNHQ$OC?7>!:-;. "    string = ""    for h in xrange(height):        for w in xrange(width):            rgb = pixels[w, h]            string += color[int(sum(rgb) / 3.0 / 256.0 * 16)]        string += "\n"    return stringdef load_and_resize_image(imgname, width, height):    img = Image.open(imgname)    if img.mode != 'RGB':        img = img.convert('RGB')    w, h = img.size    rw = width * 1.0 / w    rh = height * 1.0 / h    r = rw if rw < rh else rh    rw = int(r * w)    rh = int(r * h)    img = img.resize((rw, rh), Image.ANTIALIAS)    return imgdef image_file_to_text(img_file_path, dst_width, dst_height):    img = load_and_resize_image(img_file_path, dst_width, dst_height)    pixels = img.load()    width, height = img.size    string = image_to_text(pixels, width, height)    return stringif __name__ == '__main__':    imgname = sys.argv[1]    w = int(sys.argv[2])    h = int(sys.argv[3])    print image_file_to_text(imgname, w, h)
0 0
原创粉丝点击