您的位置:首页 > 编程语言 > Python开发

Python 利用PIL将图片转为字符

2016-02-02 20:35 597 查看

Python 利用PIL将图片转为字符

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

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

实现的效果为:

原图像:



转换后的字符:

[code]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?77CO77C
O$HOO$QOC?7!::::---->OQO77C$?-;;;--:::::!>>>>7C$$$
O$$$CC$$$C7>!!!::---;>?C7777!------::::::!>>>>COC?
$O?777?CO?7>!!:-:!!!!!>>??7>!:::!::-::::!>7>>:7?77
O?>>7777??7>>!:!!!!!!>!!7?>>!!!!!!!:::!!!7C?>!>7>>
O7!>7?$$O?>>!::!!>>!>>>>7?7>>!!>!!!::::!!?OOC????C
C?>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程序代码:

[code]#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys
from PIL import Image

def 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 string

def 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 img

def 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 string

if __name__ == '__main__':
    imgname = sys.argv[1]
    w = int(sys.argv[2])
    h = int(sys.argv[3])
    print image_file_to_text(imgname, w, h)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: