广告位联系
返回顶部
分享到

python关于图片和base64互转的三种方式

python 来源:互联网 作者:佚名 发布时间:2024-09-14 21:47:56 人浏览
摘要

通过cv2进行转换 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import cv2 import base64 import numpy as np def img_to_base64(img_array): # 传入图片为RGB格式numpy矩阵,传出的base64也是通过RGB的编码 img_array = cv2.cvtColor(i

通过cv2进行转换

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

import cv2

import base64

import numpy as np

 

def img_to_base64(img_array):

    # 传入图片为RGB格式numpy矩阵,传出的base64也是通过RGB的编码

    img_array = cv2.cvtColor(img_array, cv2.COLOR_RGB2BGR) #RGB2BGR,用于cv2编码

    encode_image = cv2.imencode(".jpg", img_array)[1] #用cv2压缩/编码,转为一维数组

    byte_data = encode_image.tobytes() #转换为二进制

    base64_str = base64.b64encode(byte_data).decode("ascii") #转换为base64

    return base64_str

     

def base64_to_img(base64_str):

    # 传入为RGB格式下的base64,传出为RGB格式的numpy矩阵

    byte_data = base64.b64decode(base64_str)#将base64转换为二进制

    encode_image = np.asarray(bytearray(byte_data), dtype="uint8")# 二进制转换为一维数组

    img_array = cv2.imdecode(encode_image, cv2.IMREAD_COLOR)# 用cv2解码为三通道矩阵

    img_array = cv2.cvtColor(img_array, cv2.COLOR_BGR2RGB)# BGR2RGB

    return img_array

方法调用:

1

2

3

4

img = np.zeros((100,100,3), dtype=np.uint8)

img[:,:,2]=255

base64_img = img_to_base64(img)

img_from_base64 = base64_to_img(base64_img)

结果显示:

通过PIL进行转换

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

from io import BytesIO

from PIL import Image

import base64

 

def image_to_base64(image):

    # 输入为PIL读取的图片,输出为base64格式

    byte_data = BytesIO()# 创建一个字节流管道

    image.save(byte_data, format="JPEG")# 将图片数据存入字节流管道

    byte_data = byte_data.getvalue()# 从字节流管道中获取二进制

    base64_str = base64.b64encode(byte_data).decode("ascii")# 二进制转base64

    return base64_str

 

def base64_to_image(base64_str):

    # 输入为base64格式字符串,输出为PIL格式图片

    byte_data = base64.b64decode(base64_str) # base64转二进制

    image = Image.open(BytesIO(byte_data)) # 将二进制转为PIL格式图片

    return image

方法调用:

1

2

3

4

5

img = np.zeros((100,100,3),dtype=np.uint8)

img[:,:,2]=255

image = Image.fromarray(img)

base64_str = image_to_base64(image)

image_from_base64=base64_to_image(base64_str)

结果显示:

直接读取图片方式

1

2

3

4

5

6

7

import base64

 

def path2base64(path):

    with open(path,"rb") as f:

        byte_data = f.read()

    base64_str = base64.b64encode(byte_data).decode("ascii")# 二进制转base64

    return base64_str

方法调用:

1

2

base64_img = path2base64("1.jpg")

img_from_base64 = base64_to_img(base64_img)

总结

无论使用哪种方式进行图片和base64的互相转换,都需要中间变量——二进制格式。

基本过程都为:base64 <——> 二进制 <——> 图片


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • python实现列表推导式与生成器的介绍
    列表推导式和生成器是 Python 中的两个非常有用的工具。它们可以帮助你以简洁和高效的方式创建和处理数据集合。了解它们的用法不仅可以
  • python关于图片和base64互转的三种方式

    python关于图片和base64互转的三种方式
    通过cv2进行转换 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 import cv2 import base64 import numpy as np def img_to_base64(img_array): # 传入图片为RGB格式numpy矩阵,
  • Python虚拟环境virtualenv安装的详细教程保姆级(Wi

    Python虚拟环境virtualenv安装的详细教程保姆级(Wi
    虚拟环境安装 工作中我们经常会根据不同的项目切换不同的python环境,如果仅仅是在本地就安装一个python环境,项目移植也要重新配置环境
  • python中eval的用法介绍

    python中eval的用法介绍
    python中eval的用法 eval(字符串) 能够以Python表达式的方式解析并执行字符串,并将返回结果输出。 eval()函数将去掉字符串的两个引号,将其解
  • Python使用切片移动元素位置的代码
    一.基本介绍 1.切片基础 在 Python 中,切片是指从序列类型(如列表、字符串、元组等)中提取子序列的过程。切片的基本语法如下: 1 seq
  • Python使用FastApi发送Post请求的步骤
    一.基本介绍 FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,它基于 Python 3.6 及以上版本。在 FastAPI 中发送 POST 请求,通常是
  • pytorch GPU和CPU模型相互加载方式
    1 pytorch保存模型的两种方式 1.1 直接保存模型并读取 1 2 3 4 5 6 7 # 创建你的模型实例对象: model model = net() ## 保存模型 torch.save(model, model_name
  • pytorch模型保存方式介绍
    pytorch模型保存 保存模型主要分为两类: 保存整个模型 只保存模型参数 1.保存加载整个模型(不推荐) 保存整个网络模型,网络结构+权重
  • 使用python生成定制化词云的代码

    使用python生成定制化词云的代码
    数据可视化已成为我们理解复杂信息的关键工具。词云,作为一种流行的数据可视化形式,能够将大量文本数据中的关键词以视觉化的方式
  • 通过Python实现在Word中添加和删除书签的操作

    通过Python实现在Word中添加和删除书签的操作
    本文中用到的方法需要用到Spire.Doc for Python库。可以直接通过pip进行安装: pip install Spire.Doc Python 在指定段落添加书签 加载Word文档; 获取指
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计