使用python pillow 图片转字符串
2016-09-09 16:55
381 查看
使用Pillow来处理图像的基础教程:
参考教程:http://pyhome.org/pythonbian-cheng-zhong-shi-yong-pillowlai-chu-li-tu-xiang-de-ji-chu-jiao-cheng-/Image类
1. 打开一张图片
>>> from PIL import Image >>> im = Image.open("ascii_dora.png")
如果打开成功,返回一个Image对象,可以通过对象属性检查文件内容
>>> print(im.format,im.size,im.mode) ('PNG', (153, 153), 'RGBA')
format属性定义了图像的格式,如果图像不是从文件打开的,那么该属性值为None;size属性是一个tuple,表示图像的宽和高(单位为像素);mode属
性为表示图像的模式,常用的模式为:L为灰度图,RGB为真彩色,CMYK为pre-press图像。
如果文件不能打开,则抛出IOError异常。
>>> im.show() #显示图片,先将图像保存为一个临时文件,然后使用xv显示 >>> im.save("new.jpg") #保存图片,save函数的第二个参数可以用来指定图片格式,如果文件名中没有给出一个标准的图像格式,那么第二个参数是必须的。
使用thumbnail()方法创建缩略图
>>> size=(50,50) #设置缩小后的尺寸 >>> im.thumbnail(size) #缩略函数 >>> im.save("thumbnail.jpg") #保存
>>> box=im.copy() #直接复制图片 >>> box <PIL.Image.Image image mode=RGBA size=50x50 at 0x7FD046DA8850>
从图片中复制子图像
坐标中的数字单位为像素点,坐标原点为左上角(0,0),区域由4-tuple决定,该tuple中信息为(left, upper, right, lower)
其实就是取左上角(left,upper)沿横竖方向到达右下角(right,lower)路线围成的矩形区域
>>> box = (100, 100, 400, 400) >>> region = im.crop(box) #按box的设置从im中截取区域
处理子图,粘贴回原图
将子图paste回原图时,子图的region必须和给定box的region吻合
>>> region = region.transpose(Image.ROTATE_180) >>> im.paste(region, box)
图片转字符串
来源:https://link.zhihu.com/?target=https%3A//www.shiyanlou.com/courses/370效果:
代码:
from PIL import Image #从PIL中倒入Image类 import argparse #argparse模块用于命令行参数控制 parser=argparse.ArgumentParser() parser.add_argument('file') #增加参数file parser.add_argument('-O','--output') #参数--output parser.add_argument('--width',type=int,default=80) #参数--width parser.add_argument('--height',type=int,default=80) #参数--height args=parser.parse_args() #获取命令行参数 IMG=args.file WIDTH=args.width HEIGHT=args.height OUTPUT=args.output ascii_char=list("$@B%8&WM#*oahkbdpqwmZo0QLCJUYXZcvunxrjft/\|()1{}[]?-_=~<>i!lI;:\"^`'.") #字符串列表 def get_char(r,g,b,alpha=256): #将像素转换为字符函数 if alpha==0: return ' ' length=len(ascii_char) gray=int(0.2126*r+0.7152*g+0.0722*b) #RGB转换为灰度 unit=(256.0+1)/length # return ascii_char[int(gray/unit)] #获取该灰度在字符串列表中所对应的字符 if __name__=='__main__': im=Image.open(IMG) #打开图片args.file,返回Image对象 im=im.resize((WIDTH,HEIGHT),Image.NEAREST) #重置尺寸 txt="" for i in range(HEIGHT): #HEIGHT,WIDTH默认是80像素 for j in range(WIDTH): txt+=get_char(*im.getpixel((j,i))) #获取像素,计算对应字符,保存到txt中,获取像素点这里用的是getpixel((i,j))函数 txt+='\n' #每到行尾换行 print txt #输出 if OUTPUT: with open(OUTPUT,'W') as f: f.write(txt) #保存到文本中 else: with open("output.txt",'w') as f: f.write(txt)
相关文章推荐
- Python---对html文件内容进行搜索取出特定URL地址字符串,保存成列表,并使用每个url下载图片,并保存到硬盘上,使用bs4,beautifulsoup模块
- (python)图片处理Pillow模块的使用
- python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别
- 使用python-pillow替换图片中的单一颜色
- 【003】Python实现图片转字符画(pillow 库的使用)
- Python---对html文件内容进行搜索取出特定URL地址字符串,保存成列表,并使用每个url下载图片,并保存到硬盘上,使用正则re
- Python strip lstrip rstrip使用方法(字符串处理空格)
- 使用python做验证码图片
- Python strip lstrip rstrip使用方法(字符串处理空格)
- Python字符串使用总结
- 【python cookbook】简化字符串的translate 方法的使用
- 使用Python脚本处理OC中的中文字符串
- 使用Python编写客户端 上传文字or图片至新浪微博
- 【python cookbook】替换字符串中的子串(使用Template)
- Python strip lstrip rstrip使用方法(字符串处理空格)
- Python strip lstrip rstrip使用方法(字符串处理空格)
- python使用r进行不转义字符串
- python 字符串使用总结
- Python字符串join使用示例
- Python中使用中文字符串