Python PIL模块Image对象、字节流对象转二进制字节流 

    今天有一个问题就是需要将网络字节流或者是Image对象转化为二进制字节流数据,之后借助于base64模块实现编码最终post到服务接口端,这里没有过多要去讲解的,直接看实现就行。

  1. from __future__ import division

  2. '''

  3. __Author__:沂水寒城

  4. 功能: Python PIL模块Image对象、字节流对象转二进制字节流

  5. '''

  6. import io

  7. import os

  8. import requests

  9. from PIL import Image

  10. import matplotlib.pyplot as plt

  11. def image2Binary():

  12. '''

  13. Image对象转化为二进制字节流对象

  14. '''

  15. img=Image.open('a.png')

  16. new=img.crop([0,67,400,340])

  17. plt.clf()

  18. plt.figure(figsize=(8,6))

  19. plt.subplot(1,2,1)

  20. plt.imshow(img)

  21. plt.title("original")

  22. plt.subplot(1,2,2)

  23. plt.imshow(new)

  24. plt.title("crop")

  25. plt.show()

  26. binary_str=open('a.png','rb').read()

  27. img_byte=io.BytesIO()

  28. new.save(img_byte,format='PNG')

  29. binary_str2=img_byte.getvalue()

  30. return binary_str,binary_str2

  31. def bytes2Binary():

  32. '''

  33. 网络字节流数据转化为二进制节流对象

  34. '''

  35. url="https://a.png"

  36. response=requests.get(url)

  37. im=Image.open(io.BytesIO(response.content))

  38. img_byte=io.BytesIO()

  39. im.save(img_byte,format='PNG')

  40. binary_str=img_byte.getvalue()

  41. return binary_str

  42. if __name__ == '__main__':

  43. binary_str,binary_str2=image2Binary()

  44. binary_str=bytes2Binary()