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)
相关文章推荐
- NumPy快速入门
- python 多线程笔记(3)-- 线程的私有命名空间
- Python快速入门
- python list和dict的遍历
- python环境搭建
- Python+OpenCV实现图像高斯模糊
- Beginning Python Chapter 1 Notes
- 一入python深似海--浅拷贝与深拷贝
- Python 11.1 PIL
- python GUI编程
- python 多线程笔记(2)-- 锁
- python逐行读写
- python 多线程笔记(1)-- 概念
- Python的组合模式与责任链模式编程示例
- python的日志处理
- Python【基础第三篇】
- python 将字符串转化成16进制进行UDP的发送
- 举例讲解Python中的Null模式与桥接模式编程
- 基于Python的数据分析(2):字符串编码
- python 动态加载module、class、function