Python 图像与二进制格式、 str 与byte之间转换

本文介绍了Python中如何将图像转换为二进制格式,特别是为了数据传输,如在web开发中。主要涉及RGB图像转二进制字节流的两种方法:通过URL获取和读取本地文件,以及二进制回转为RGB图像的PIL和cv2库的使用。同时,也涵盖了字符串与字节之间的转换操作。

图像转换为二进制

图像转换为二进制主要是方便数据传输,比如在web开发中,将数据从客户端传到服务端需要将客户端的数据转换为Byte类型,然后在服务端接收到数据后再将Byte类型的数据转换为图像.

  • RGB图像转换为二进制方式有两种:

    • 通过url读取图像并且转换为二进制字节流
      from urllib import request
      image = request.urlopen('https://pic.cnblogs.com/avatar/875028/20160405220401.png').read()
      
    • 读入本地图像然后转换为二进制字节流
      import cv2
      with open('/media/work/data/temp.jpg', 'rb') as data:
          image = data.read()
      
  • 二进制图像转换为RGB图像方式有两种

    • 通过PIL 读取二进制字节流

      from PIL import Image
      import io
      import numpy as np
      # covert byte to RGB image
      img = Image.open(io.BytesIO(image))
      # Image 转numpy
      img_np = np.array(img)
      
    • 通过cv2读取二进制字节流

      import cv2
      import numpy as np
      from PIL import Image
      # img BGR
      img = cv2.imdecode(np.frombuffer(image, np.uint8), cv2.IMREAD_COLOR)
      # covert BRG to RGB
      img_np = cv2.cvtColor(img. cv2.COLOR_RGB2BGR)
      #numpy 转Image
      img = Image.fromarray(img_np)
      
  • string 与 byte 之间转换

    # bytes 
    b = b"something"
    # str 
    s = "something"
    # str to bytes two method
    b = bytes(s, encoding = "utf8")
    b = str.encode(s)
    # bytes to str two method
    s = str(b, encoding = "utf-8")
    s = bytes.decode(b)
    
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值