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