Magick::Blob

Blob 提供了一种容纳任何不透明数据的方法。它以“二进制大对象”一词命名,该词通常用于描述存储在数据库中的非结构化数据(例如编码的图像)。虽然 Blob 的功能非常简单(存储与分配数据相关的指针和大小),但 Blob 类提供了一些非常有用的功能。特别是,它与 Image 类一样完全引用计数。

Blob 类支持值分配,同时保留对象的任何未完成的早期版本。由于分配是通过内部的指针进行的,因此 Blob 足够高效,可以直接存储在 STL 容器或任何其他需要分配的数据结构中。特别是,通过将 Blob 存储在关联容器(如 STL 的'map')中,可以创建简单的索引内存中“数据库”的 Blob。

Magick++ 目前使用 Blob 来包含编码的图像(例如 JPEG)以及 ICC 和 IPTC 配置文件。由于 Blob 是一个通用类,因此它也可以用于其他目的。

Blob 提供的方法显示在下表中


Blob 方法

方法

返回类型

签名

描述

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++ 内存分配器。