欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python關于圖片和base64互轉的三種方式

 更新時間:2024年09月14日 11:25:06   作者:臉不大的CVer  
無論使用cv2、PIL還是直接讀取圖片的方法進行圖片與Base64的轉換,核心步驟都涉及到二進制格式的轉換,每種方法的基本過程都是:Base64轉二進制,然后二進制轉圖片,或反向操作,這些方法均基于二進制與圖片轉換的基本原理

通過cv2進行轉換

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

方法調用:

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進行轉換

from io import BytesIO
from PIL import Image
import base64

def image_to_base64(image):
    # 輸入為PIL讀取的圖片,輸出為base64格式
    byte_data = BytesIO()# 創(chuàng)建一個字節(jié)流管道
    image.save(byte_data, format="JPEG")# 將圖片數據存入字節(jié)流管道
    byte_data = byte_data.getvalue()# 從字節(jié)流管道中獲取二進制
    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

方法調用:

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)

結果顯示:

直接讀取圖片方式

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

方法調用:

base64_img = path2base64("1.jpg")
img_from_base64 = base64_to_img(base64_img)

總結

無論使用哪種方式進行圖片和base64的互相轉換,都需要中間變量——二進制格式。

基本過程都為:base64 <——> 二進制 <——> 圖片

其中使用到了我的另一篇文章二進制和圖片互相轉換的三種方式

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • OpenCV特征提取與檢測之Harris角點檢測

    OpenCV特征提取與檢測之Harris角點檢測

    這篇文章主要給大家介紹了關于OpenCV特征提取與檢測之Harris角點檢測的相關資料,Harris角點檢測的目的是去分辨出圖像中的平面、邊界以及角點,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-08-08
  • PyQt5實現簡易計算器

    PyQt5實現簡易計算器

    這篇文章主要為大家詳細介紹了用PyQt5開發(fā)一個簡易的計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • PyQt5 實現狀態(tài)欄永久顯示消息

    PyQt5 實現狀態(tài)欄永久顯示消息

    這篇文章主要介紹了PyQt5 實現狀態(tài)欄永久顯示消息的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python中的生成器、迭代器、裝飾器詳解

    python中的生成器、迭代器、裝飾器詳解

    本文詳細講解了python中的生成器、迭代器、裝飾器,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • python生成器用法實例詳解

    python生成器用法實例詳解

    這篇文章主要介紹了python生成器用法,結合實例形式詳細分析了Python生成器相關原理、創(chuàng)建、使用方法及操作注意事項,需要的朋友可以參考下
    2019-11-11
  • python中enumerate函數用法實例分析

    python中enumerate函數用法實例分析

    這篇文章主要介紹了python中enumerate函數用法,以實例形式較為詳細的分析了enumerate函數的功能、定義及使用技巧,需要的朋友可以參考下
    2015-05-05
  • 用Python實現KNN分類算法

    用Python實現KNN分類算法

    這篇文章主要為大家詳細介紹了用Python實現KNN分類算法的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • 在Python反編譯中批量pyc轉?py的實現代碼

    在Python反編譯中批量pyc轉?py的實現代碼

    這篇文章主要介紹了在Python反編譯中批量pyc轉?py的實現代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • Python如何使用opencv進行手勢識別詳解

    Python如何使用opencv進行手勢識別詳解

    目前,人們正需要研發(fā)以人為中心進行計算機交互控制,所以下面這篇文章主要給大家介紹了關于Python如何使用opencv進行手勢識別的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • macbook安裝環(huán)境chatglm2-6b的詳細過程

    macbook安裝環(huán)境chatglm2-6b的詳細過程

    這篇文章主要介紹了macbook安裝chatglm2-6b的過程詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07

最新評論