zoukankan      html  css  js  c++  java
  • python对图片进行base64编码,互相转换

    全程使用openCV,没有PIL

    代码:

     1 import base64
     2 import cv2
     3 import sys
     4 import numpy as np
     5 
     6 path = sys.argv[1]
     7 
     8 with open(path, "rb") as image_file:
     9     encodedImage = base64.b64encode(image_file.read())
    10 imgBase64 = "data:image/jpeg;base64," + encodedImage
    11 file = open('imgBase64.txt', 'wb')
    12 file.write(imgBase64)
    13 file.close()
    14 
    15 npArray = np.fromstring(encodedImage.decode('base64'), np.uint8)
    16 image = cv2.imdecode(npArray, cv2.IMREAD_COLOR)
    17 cv2.imwrite('img.jpeg',image)

    该脚本读取一个图片文件,转换为base64编码后,添加前缀,并保存到txt中。同时解析base64编码,将转换出来的图片保存到当前目录。 

    读取图片转成base64字符串:

    要注意用读文件的方式读取图片,不能用 cv2.imread()。我读取的是 jpeg图片,在网络传输时需要加上前缀 "data:image/jpeg;base64," 。

    从base64字符串转为图片:

    注意要先去掉前缀 "data:image/jpeg;base64," , 然后再扔到decode函数中。以上是用openCV保存图片,也可以直接用保存文件的方式:

    imgData = base64.b64decode(imgString.strip().replace("data:image/jpeg;base64,",''))
                
    file = open('img.jpeg', 'wb')
    file.write(imgData)
    file.close()

    参考: https://stackoverflow.com/questions/33754935/read-a-base-64-encoded-image-from-memory-using-opencv-python-library/54205640

  • 相关阅读:
    Paxos算法理解
    JavaScript笔记
    JVM基础知识(二)
    JVM基础知识(一)
    书单
    centos6.3环境下升级python及MySQLdb的安装
    winform中button的image属性无法更改
    未能找到任何适合于指定的区域性或非特定区域性的资源
    Spring注解开发第十二讲--@Profile注解讲解
    Spring注解驱动第十一讲--引用Spring底层组件
  • 原文地址:https://www.cnblogs.com/mrlonely2018/p/15184855.html
Copyright © 2011-2022 走看看