Python PIL模块Image对象、字节流对象转二进制字节流
#!usr/bin/env python# encoding:utf-8
from __future__ import division
'''
__Author__:沂水寒城
功能: Python PIL模块Image对象、字节流对象转二进制字节流
'''
import io
import os
import requests
from PIL import Image
import matplotlib.pyplot as plt
def image2Binary():
'''
Image对象转化为二进制字节流对象
'''
img=Image.open('a.png')
new=img.crop()
plt.clf()
plt.figure(figsize=(8,6))
plt.subplot(1,2,1)
plt.imshow(img)
plt.title("original")
plt.subplot(1,2,2)
plt.imshow(new)
plt.title("crop")
plt.show()
#图像文件可以从本地静态文件中直接读取为二进制字节流形式
binary_str=open('a.png','rb').read()
#已经被Image类读取成为Image对象后也可以转化为二进制字节流形式
img_byte=io.BytesIO()
new.save(img_byte,format='PNG')
binary_str2=img_byte.getvalue()
return binary_str,binary_str2
def bytes2Binary():
'''
网络字节流数据转化为二进制节流对象
'''
url="https://a.png"#测试图片url
response=requests.get(url)
#网络图像字节流数据可以直接被Image类转化为Image对象
im=Image.open(io.BytesIO(response.content))
img_byte=io.BytesIO()
im.save(img_byte,format='PNG')
binary_str=img_byte.getvalue()
return binary_str
if __name__ == '__main__':
binary_str,binary_str2=image2Binary()
binary_str=bytes2Binary()
页:
[1]