程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

Django 通过将图片转为Base64,然后使用json传输

发布于2019-08-07 12:55     阅读(1417)     评论(0)     点赞(2)     收藏(5)


Django 通过将图片转为Base64,然后使用json传输

最近使用Django来进行图像的传输,由于要求需要使用Json格式进行请求,所以我们尝试了二进制编码放在json里,发现bytes格式不能打入json,于是转为了base64

将图片转为json

图片转为json有2中方法,一个是二进制后再转,一个是转为矩阵以后再转。

import base64
import cv2

#通过opencv转base64
img_im= cv2.imread("D://32.png")
aa=base64.b64encode(cv2.imencode('.jpg',img_im)[1]).decode()
print(len(aa))  #17292


#通过bytes再转base64
bb=base64.b64encode(open("D://32.png", 'rb').read())
print(len(bb))  #43848
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

最后采用了Opencv的方式,主要发现opencv的base64编码比第二种短一半,所以用了第一种。

客户端请求发送数据格式

客户端请求服务器的base64,目前我这里发现2中,通过Postman测试。
第一种 ‘form/data’:

#客户端:
image1= cv2.imread("D://32.png")
aa=base64.b64encode(cv2.imencode('.jpg',image1)[1]).decode()
r = requests.post(url, data={"image": image1})
print(r.content.decode("utf-8"))

#服务端:
def image_base64(request):
	result = request.POST.get("image")
	img_byte = base64.b64decode(result)
	img_np_arr = np.fromstring(img_byte, np.uint8)
	image = cv2.imdecode(img_np_arr, cv2.IMREAD_COLOR)
	#image 已经转为矩阵了
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

第二种 ‘application/json’:

#客户端:
image1= cv2.imread("D://32.png")
aa=base64.b64encode(cv2.imencode('.jpg',image1)[1]).decode()
r = requests.post(url, json={"image": image1})
print(r.content.decode("utf-8"))

#服务端:
def local_ocr_base64(request):
    # result = request.POST.get("image")
    data = request.body   
    data_json=simplejson.loads(data) #data是str格式的,需要转为json
    result=data_json["image"]
    img_byte = base64.b64decode(result)
    img_np_arr = np.fromstring(img_byte, np.uint8)
    image = cv2.imdecode(img_np_arr, cv2.IMREAD_COLOR)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15


所属网站分类: 技术文章 > 博客

作者:怪兽爸爸

链接:https://www.pythonheidong.com/blog/article/11067/7b0e9affa74fb7c6c432/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

2 0
收藏该文
已收藏

评论内容:(最多支持255个字符)