Magick::Blob

Blob は、不透明なデータを格納する手段を提供します。データベースに保存される非構造化データ(符号化画像など)を一般的に表すために使用される「Binary Large Object」という用語にちなんで名付けられました。Blob の関数は非常にシンプル(割り当てられたデータに関連付けられたポインタとサイズを格納)ですが、Blob クラスには非常に便利な機能がいくつか備わっています。特に、Image クラスとまったく同様に完全参照カウントされています。

Blob クラスは、オブジェクトの以前のすべての古いバージョンを保持しながら、値の割り当てをサポートします。割り当ては内部的にポインタを介して行われるため、Blob は STL コンテナや割り当てを必要とする他のデータ構造に直接格納するのに十分な効率があります。特に、連想コンテナ(STL の 'map' など)に Blob を格納することで、Blob の簡単なインデックス付きインメモリ「データベース」を作成できます。

Magick++ は現在、ICC および IPTC プロファイルだけでなく、Blob を使用して符号化画像(JPEG など)を格納しています。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++ メモリ割り当て方式を使用します。