python圖片和二進制轉換的三種實現(xiàn)方式
更新時間:2024年09月14日 11:26:25 作者:臉不大的CVer
本文介紹了將PIL格式、數(shù)組和圖片轉換為二進制的不同方法,包括使用PIL庫、OpenCV和直接讀取二進制,此外,還提到了數(shù)據(jù)傳輸中base64格式的應用,這些信息對需要進行圖片數(shù)據(jù)處理和轉換的開發(fā)者非常有用
PIL格式轉二進制
先讀取為PIL格式,再轉為二進制
import io
import base64
from PIL import Image
def image2byte(image):
'''
圖片轉byte
image: 必須是PIL格式
image_bytes: 二進制
'''
# 創(chuàng)建一個字節(jié)流管道
img_bytes = io.BytesIO()
# 將圖片數(shù)據(jù)存入字節(jié)流管道, format可以按照具體文件的格式填寫
image.save(img_bytes, format="JPEG")
# 從字節(jié)流管道中獲取二進制
image_bytes = img_bytes.getvalue()
return image_bytes
def byte2image(byte_data):
'''
byte轉為圖片
byte_data: 二進制
'''
image = Image.open(io.BytesIO(byte_data))
return image
調用代碼
image_path = "img/3.jpg" image = Image.open(image_path) byte_data = image2byte(image) image2 = byte2image(byte_data)
數(shù)組轉二進制
先用opencv讀取為數(shù)組格式,再轉為二進制
def numpy2byte(image):
'''
數(shù)組轉二進制
image : numpy矩陣/cv格式圖片
byte_data:二進制數(shù)據(jù)
'''
#對數(shù)組的圖片格式進行編碼
success,encoded_image = cv2.imencode(".jpg",image)
#將數(shù)組轉為bytes
byte_data = encoded_image.tobytes()
return byte_data
def byte2numpy(byte_data):
'''
byte轉numpy矩陣/cv格式
byte_data:二進制數(shù)據(jù)
image : numpy矩陣/cv格式圖片
'''
image = np.asarray(bytearray(byte_data), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
return image
調用代碼
image_path = "img/3.jpg" image = cv2.imread(image_path) byte_data = numpy2byte(image) image2 = byte2numpy(byte_data)
圖片轉二進制
直接讀取圖片為二進制
import cv2
import numpy as np
def read2byte(path):
'''
圖片轉二進制
path:圖片路徑
byte_data:二進制數(shù)據(jù)
'''
with open(path,"rb") as f:
byte_data = f.read()
return byte_data
def byte2numpy(byte_data):
'''
byte轉numpy矩陣/cv格式
byte_data:二進制數(shù)據(jù)
image : numpy矩陣/cv格式圖片
'''
image = np.asarray(bytearray(byte_data), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)
return image
調用代碼
image_path = "img/3.jpg" byte_data = read2byte(image_path) image = byte2numpy(byte_data)
延伸
有時候數(shù)據(jù)傳輸規(guī)定轉換為base64格式,可以參考我的另一篇文章 圖片和base64轉換的三種方式
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Django+Nginx+uWSGI 定時任務的實現(xiàn)方法
本文主要介紹了Django+Nginx+uWSGI 定時任務的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-01-01
Python尾遞歸優(yōu)化實現(xiàn)代碼及原理詳解
這篇文章主要介紹了Python尾遞歸優(yōu)化實現(xiàn)代碼及原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10
python算法學習雙曲嵌入論文代碼實現(xiàn)數(shù)據(jù)集介紹
由于雙曲嵌入相關的文章已經有了一系列的代碼。本篇博客主要目的實現(xiàn)最開始的雙曲嵌入論文,將論文中有些直接寫出來的內容進行了細節(jié)的推導,同時實現(xiàn)對應的代碼2021-11-11
Pycharm正版2022.2.2?官方翻譯插件更新tkk失敗不能用問題及解決方案
這篇文章主要介紹了Pycharm正版2022.2.2?|?官方翻譯插件更新tkk失敗解決,?出現(xiàn)tkk問題的是這個翻譯插件,本教程只解決該翻譯插件不能用的問題,需要的朋友可以參考下2022-11-11

