Blob 提供了包含任何不透明數據的方法。它以「二進制大物件」(Binary Large OBject)命名,這個詞通常用於描述存儲在數據庫中的非結構化數據(例如編碼圖像)。雖然 Blob 的功能非常簡單(存儲與分配的數據相關聯的指針和大小),但 Blob 類提供了一些非常有用的功能。特別是,它像 Image 類一樣完全支持引用計數。
Blob 類支持值分配,同時保留對象的任何未完成的早期版本。由於賦值在內部是通過指針進行的,因此 Blob 的效率足以直接存儲在 STL 容器或任何其他需要賦值的數據結構中。特別是,通過將 Blob 存儲在關聯式容器(例如 STL 的「map」)中,可以創建 Blob 的簡單索引內存「數據庫」。
Magick++ 目前使用 Blob 來包含編碼圖像(例如 JPEG)以及 ICC 和 IPTC 配置文件。由於 Blob 是一個通用的類別,因此它也可以用於其他目的。
Blob 提供的方法如下表所示
Blob 方法
方法 |
返回類型 |
簽名(Signature) |
說明 |
void |
默認構造函數 |
||
const void* data_, size_t length_ |
使用數據構造對象,複製提供的數據 |
||
const Blob& blob_ |
複製構造函數(引用計數) |
||
Blob |
const Blob& blob_ |
賦值運算符(引用計數) |
|
void |
const std::string base64_ |
從 Base64 編碼的字符串表示更新對象內容。 |
|
std::string |
void |
返回 Base64 編碼的字符串表示。 |
|
const void* |
void |
獲取指向數據的指針。用戶不應嘗試修改或釋放此數據,因為 Blob 類管理其自己的數據。用戶必須在允許銷毀 Blob 之前完成數據處理,因為一旦 Blob 被銷毀,指針將失效。 |
|
size_t |
void |
獲取數據長度。 |
|
void |
const void* data_, size_t length_ |
更新對象內容,複製提供的數據。對象中的任何現有數據都將被釋放。 |
|
void |
void* data_, size_t length_, Blob::Allocator allocator_ = Blob::NewAllocator |
更新對象內容,直接使用提供的指針(不複製)。對象中的任何現有數據都將被釋放。用戶必須確保在將提供的指針提供給此方法後,不會刪除或修改該指針。可選的 allocator_ 參數允許用戶指定是用 C (MallocAllocator) 還是 C++ (NewAllocator) 內存分配系統來分配內存。默認情況下使用 C++ 內存分配器。 |