PIL
PIL:Python Imaging Library。这是python支持图像处理相对来说比较好的一个模块。
PIL的安装
centos:
yum install python -devel
yum install libjpeg libjpeg-devel zlib zlib-devel freetype freetype-devel lcms lcms-devel
yum install python-imaging
Debian/Ubuntu Linux:
sudo apt-get install python-imaging
yum install python-imaging
实在不行:sudo easy_install PIL
windows/mac : pip install pillow
PIL简单的使用方法:
from PIL import Image
# 读取当前图片
im = Image.open('test.jpg')
# 查看该图片
im.show()
# 将图片进行逆时针旋转
im.rotate(90).show() # 如果是将图片进行顺时针旋转,改为im.rotate(-90).show()即可
# 保存图像为gif格式
im.save("save.gif","GIF")
#resize成128*128像素大小
test_im=im.resize((128,128))
# 更改坐标,参数分别是 left, upper, right, lower
position = (100, 100, 400, 400)
region = im.crop(position)
# 获取图片基本信息
print(im.size,im.format, im.mode)
# 等比例缩放
size = 128, 128
im.thumbnail(size,Image.ANTIALIAS)
# 图像左右转换
im.transpose(Image.FLIP_LEFT_RIGHT)
# 图像上下转换
im.transpose(Image.FLIP_TOP_BOTTOM)
# 图像类型转换
im.convert("RGBA")
# 通道分离,分为三个图像对象
r, g, b = im.split()
print r, g, b
#
#
#
# 能分离就能合并,将b,r两个通道进行翻转。
im = Image.merge("RGB", (b, g, r))
有趣的图识别(图为大耳朵图图)图片地址
py代码:
from PILimport Image
import requests
import os
#根据url下载到当前目录的image目录下
def url_download(img_url,img_name):
os.makedirs('./image/', exist_ok=True)
img = requests.get(img_url)
img_url ='./image/'+ img_name+'.jpg'
with open(img_url,'wb')as img_file:
img_file.write(img.content)
return img_url,img_name
char_type=list('''@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,、"^`'.''')
#灰度映射到字符
def chars(r,g,b,alpha=256):
grey=int(0.2126*r+0.7152*g+0.0722*b)
block = (256.0+1)/len(char_type)
return char_type[int(grey/block)]
#最终得到图像的灰度txt
def get_pic_item(width=39,height=25):
img_url,img_name=url_download('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1554912005678&di=8233802413bfc61713e05468bb5a88c4&imgtype=0&src=http%3A%2F%2Fb-ssl.duitang.com%2Fuploads%2Fitem%2F201711%2F22%2F20171122165316_v8fym.jpeg','tutu')
img=Image.open(img_url)
img=img.resize((width,height),Image.NEAREST)
item=''
for iin range(height):
for jin range(width):
item+=chars(*img.getpixel((j,i)))
item+='\n'
item_url='./image/'+img_name+'.txt'
with open(item_url,'w')as f:
f.write(item)
if __name__=='__main__':
#执行函数
get_pic_item()
处理后截图:
小功告成了!!!!