Magick::Blob

Blob 提供了包含任何不透明數據的方法。它以「二進制大物件」(Binary Large OBject)命名,這個詞通常用於描述存儲在數據庫中的非結構化數據(例如編碼圖像)。雖然 Blob 的功能非常簡單(存儲與分配的數據相關聯的指針和大小),但 Blob 類提供了一些非常有用的功能。特別是,它像 Image 類一樣完全支持引用計數。

Blob 類支持值分配,同時保留對象的任何未完成的早期版本。由於賦值在內部是通過指針進行的,因此 Blob 的效率足以直接存儲在 STL 容器或任何其他需要賦值的數據結構中。特別是,通過將 Blob 存儲在關聯式容器(例如 STL 的「map」)中,可以創建 Blob 的簡單索引內存「數據庫」。

Magick++ 目前使用 Blob 來包含編碼圖像(例如 JPEG)以及 ICC 和 IPTC 配置文件。由於 Blob 是一個通用的類別,因此它也可以用於其他目的。

Blob 提供的方法如下表所示


Blob 方法

方法

返回類型

簽名(Signature)

說明

Blob

void

默認構造函數

const void* data_, size_t length_

使用數據構造對象,複製提供的數據

const Blob& blob_

複製構造函數(引用計數)

operator=

Blob

const Blob& blob_

賦值運算符(引用計數)

base64

void

const std::string base64_

從 Base64 編碼的字符串表示更新對象內容。

std::string

void

返回 Base64 編碼的字符串表示。

data

const void*

void

獲取指向數據的指針。用戶不應嘗試修改或釋放此數據,因為 Blob 類管理其自己的數據。用戶必須在允許銷毀 Blob 之前完成數據處理,因為一旦 Blob 被銷毀,指針將失效。

length

size_t

void

獲取數據長度。

update

void

const void* data_, size_t length_

更新對象內容,複製提供的數據。對象中的任何現有數據都將被釋放。

updateNoCopy

void

void* data_, size_t length_, Blob::Allocator allocator_ = Blob::NewAllocator

更新對象內容,直接使用提供的指針(不複製)。對象中的任何現有數據都將被釋放。用戶必須確保在將提供的指針提供給此方法後,不會刪除或修改該指針。可選的 allocator_ 參數允許用戶指定是用 C (MallocAllocator) 還是 C++ (NewAllocator) 內存分配系統來分配內存。默認情況下使用 C++ 內存分配器。