Magick++は、テンプレート引数の型を限定的に使用します。現在のテンプレート引数の型は以下のとおりです。
コンテナBack Insertion Sequence の特性を持つコンテナ。シーケンスは順方向イテレータをサポートし、Back Insertion Sequenceはpush_back()を介して要素を追加する機能もサポートします。一般的な互換性のあるコンテナ型には、STLの<vector>および<list>テンプレートコンテナがあります。このテンプレート引数は通常、1つ以上の画像フレームを追加できる出力コンテナを表すために使用されます。特定のデフォルトのcapacityを持つSTLの<vector>のようなコンテナでは、予期される最終的なsizeをサポートするために、reserve()を使用してcapacityをより大きな値に調整する必要がある場合があります。Magick++の画像は非常に小さいため、ほとんどの場合、STLの<vector>のデフォルトのcapacityで十分です。InputIterator
コンテナ内の位置を表すために使用される入力イテレータ。これらのテンプレート引数は、通常、first_が処理される最初の要素を表し、last_が停止する要素を表す要素の範囲を表すために使用されます。コンテナの内容全体を処理する場合、STLコンテナは通常、それぞれ最初の要素と最後の要素に対応する入力イテレータを返すbegin()メソッドとend()メソッドを提供していることを知っておくと便利です。
GIFアニメーションのフレームを水平方向に連結する例を以下に示します。"test_image_anim.gif"を連結した画像をファイルappended_image.miffに書き込みます。
#include <list> #include <Magick++.h> using namespace std; using namespace Magick; int main(int argc,char **argv) { InitializeMagick(*argv); list<Image> imageList; readImages( &imageList, "test_image_anim.gif" ); Image appended; appendImages( &appended, imageList.begin(), imageList.end() ); appended.write( "appended_image.miff" ); return 0; }
画像フレームのシーケンスを操作するための利用可能なMagick++固有のSTLアルゴリズムを次の表に示します。
|
|
|
|
InputIterator first_, InputIterator last_ | 画像フレームのシーケンスをアニメーション化します。画像フレームは連続して表示され、アニメーション効果が作成されます。アニメーションオプションは最初の画像フレームから取得されます。この機能は現時点ではX11でのみサポートされています。 |
|
Image *appendedImage_, InputIterator first_, InputIterator last_, bool stack_ = false | 画像フレームのシーケンスを追加し、結果をappendedImage_に書き込みます。すべての入力画像フレームの幅または高さが同じである必要があります。幅が同じ画像フレームは上から下に積み重ねられます。高さが同じ画像フレームは左から右に積み重ねられます。stack_パラメータがfalseの場合、長方形の画像フレームは左から右に積み重ねられ、それ以外の場合は上から下に積み重ねられます。 |
|
Image *averagedImage_, InputIterator first_, InputIterator last_ | 画像フレームのシーケンスの平均を計算し、結果をaveragedImage_に書き込みます。すべての入力画像フレームのピクセルサイズは同じである必要があります。 |
|
Container *coalescedImages_, InputIterator first_, InputIterator last_ |
画像シーケンスを「再生」(ページオフセットと破棄方法を観察)して、すべてのフレームがフルサイズで完全にレンダリングされた新しい画像シーケンスを作成することにより、取得される連結された画像シーケンスを作成します。元の画像シーケンスがページオフセットと破棄方法に依存していた場合、結果のシーケンスは元のシーケンスよりも大きくなる(場合によってははるかに大きくなる)ことに注意してください。これは、ページオフセットと破棄方法を持つGIFアニメーションシーケンスに役立ちます。結果の画像シーケンスはcoalescedImages_を介して返されます。 |
|
Container *deconstructedImages_, InputIterator first_, InputIterator last_ | 画像シーケンスを構成要素に分割します。これは、GIFまたはMNGアニメーションシーケンスを作成するのに役立ちます。入力シーケンスはfirst_とlast_で指定され、分解された画像はdeconstructedImages_を介して返されます。 |
|
InputIterator first_, InputIterator last_ | 画像フレームのシーケンスを表示します。ポップアップメニューを使用して、画像フレームを連続して選択できます。この機能はX11で完全にサポートされていますが、他の環境ではサポートが制限される場合があります。 注意: 画像形式が表示ビジュアルと互換性がない場合(例:カラーマップ表示でのJPEG)、元の画像は変更されます。これが問題になる場合は、元の画像のコピーを使用してください。 |
|
Image *flattendImage_, InputIterator first_, InputIterator last_ | 画像レイヤーを表す画像フレームのシーケンスを、単一の合成表現にマージします。flattendImage_パラメータは、フラット化された画像で更新する既存のImageを指します。この関数は、Photoshopレイヤーを単一の画像に結合する場合に役立ちます。 |
|
Container *fourierImages_, const Image &image_ | fourierImages_を介して、画像の離散フーリエ変換(DFT)を振幅/位相画像ペアとして実装します。 |
|
Container *fourierImages_, const Image &image_, const bool magnitude_ | fourierImages_を介して、画像の離散フーリエ変換(DFT)を振幅/位相または実数/虚数画像ペアとして実装します。 |
|
InputIterator first_, InputIterator last_, const Image & mapImage_, bool dither_, bool measureError_ = false | 参照画像から最も近い色を使用して、画像シーケンスの色を置き換えます。ディザリングを有効にするには、dither_をtrueに設定します。量子化誤差を評価するには、measureError_をtrueに設定します。 |
|
Container *montageImages_, InputIterator first_, InputIterator last_, const Montage &montageOpts_ | 複数の個別の画像フレームを組み合わせることで合成画像を作成します。タイル設定とモンタージュされた画像フレームの数に応じて、出力コンテナmontageImages_に複数のフレームが生成される場合があります。モンタージュオプションは、パラメータmontageOpts_を介して提供されます。最初の画像フレームで設定されたオプション(backgroundColor、borderColor、matteColor、penColor、font、fontPointsize)も、montageImages()によってオプションとして使用されます。 |
|
Container *morphedImages_, InputIterator first_, InputIterator last_, size_t frames_ | 画像フレームのシーケンスをモーフィングします。このアルゴリズムは、frames_で指定された介入フレームの数を追加することにより、画像フレームの数(出力コンテナmorphedImages_)を拡張します。これにより、アニメーションとして再生されたときに、元のフレームが互いにモーフィング(ブレンド)されます。 |
|
Image *mosaicImage_, InputIterator first_, InputIterator last_ | 複数の画像を組み合わせて、単一の首尾一貫した画像を形成します。mosicImage_引数は、first_からlast_で表される画像シーケンスから構築されたモザイクで更新されます。 |
InputIterator first_, InputIterator last_, bool measureError_ = false | 現在の量子化設定を使用して、画像の色を量子化します。量子化誤差を測定するには、measureError_をtrueに設定します。 | |
|
Container *sequence_, const std::string &imageSpec_ | UTF-8文字列imageSpec_で指定された画像名を使用して、既存のコンテナ(コンテナsequence_に追加)に画像フレームのシーケンスを読み込みます。 |
Container *sequence_, const Blob &blob_ | Blob blob_から既存のコンテナ(コンテナsequence_に追加)に画像フレームのシーケンスを読み込みます。 | |
|
InputIterator first_, InputIterator last_, const std::string &imageSpec_, bool adjoin_ = true | 文字列imageSpec_で指定されたファイルにコンテナ内の画像を書き込みます。ワイルドカードimageSpec_(例:image%02d.miff)を使用して画像フレームのセットを書き込むには、adjoin_をfalseに設定します。 ワイルドカードは次のいずれかである必要があります。%0Nd、%0No、または%0Nx. 注意: 元の画像よりも少ない色をサポートできる画像形式が選択されている場合、または量子化が要求されている場合、元の画像はより少ない色に量子化されます。これが問題になる場合は、元の画像のコピーを使用してください。 |
InputIterator first_, InputIterator last_, Blob *blob_, bool adjoin_ = true | Blob blob_で指定されたメモリ内BLOBにコンテナ内の画像を書き込みます。ワイルドカードimageSpec_(例:image%02d.miff)を使用して画像フレームのセットを書き込むには、adjoin_をfalseに設定します。 注意: 元の画像よりも少ない色をサポートできる画像形式が選択されている場合、または量子化が要求されている場合、元の画像はより少ない色に量子化されます。これが問題になる場合は、元の画像のコピーを使用してください。 |
さらに、まだ文書化されていない次のメソッドもサポートしています。combineImages()
、evaluateImages()
、mergeImageLayers()
、optimizeImageLayers()
、optimizePlusImageLayers()
、separateImages()
。
unary_function<Arg, Result>そして、派生クラスが次の形式のメソッドを実装することを期待しています。
Result operator()( Arg argument_);これは、関数オブジェクトを使用するアルゴリズムによって呼び出されます。Magick++で定義された単項関数オブジェクトの場合、呼び出される関数は次のようになります。
void operator()( Image &image_);典型的な実装は次のようになります。
void operator()( Image &image_ )ここで、contrastはImageメソッドであり、_sharpenはコンストラクタによって関数オブジェクト内に格納される引数です。コンストラクタはポリモーフィックであるため、特定の関数オブジェクトには複数のコンストラクタがあり、提供された引数に基づいて適切なImageメソッドを選択します。
{
image_.contrast( _sharpen );
}
本質的に、単項関数オブジェクト(Magick++によって提供される)は、単項関数オブジェクトで使用するために設計されたアルゴリズムによって後で使用する引数をキャッシュするオブジェクトを構築する手段を提供するだけです。Imageクラスによって提供される各アルゴリズムに対応する単項関数オブジェクトがあり、Imageクラスの各同義メソッドと互換性のあるコンストラクタがあります。
Magick++が画像の操作をサポートするために提供する単項関数オブジェクトを次の表に示します。
関数オブジェクト | コンストラクタシグネチャ | 説明 |
size_t width, size_t height, unsigned offset = 0 |
画像に適応的閾値処理を適用します。適応的閾値処理は、最適な閾値レベルが事前に不明な場合、または画像全体で照度勾配が一定でない場合に役立ちます。適応的閾値処理は、画素領域(width と height で指定されたサイズ)の平均を評価し、その平均を閾値として使用することによって機能します。背景から残留ノイズを除去するために、閾値は平均から定数offset(デフォルトはゼロ)を引いて計算することで調整できます。 |
|
|
NoiseType noiseType_ | 指定されたノイズタイプで画像にノイズを追加します。 |
affineTransformImage |
const DrawableAffine &affine_ |
指定されたアフィン(または自由変換)行列によって画像を変換します。 |
|
const std::string &text_, const Geometry &location_ | 指定されたテキスト、バウンディングエリア、配置グラビティ、および回転を使用してテキストで注釈を付けます。boundingArea_ が無効な場合、バウンディングエリアは画像全体になります。 |
std::string text_, const Geometry &boundingArea_, GravityType gravity_ | 指定されたテキスト、バウンディングエリア、および配置グラビティを使用して注釈を付けます。boundingArea_ が無効な場合、バウンディングエリアは画像全体になります。 | |
const std::string &text_, const Geometry &boundingArea_, GravityType gravity_, double degrees_, | 指定されたテキスト、バウンディングエリア、配置グラビティ、および回転を使用してテキストで注釈を付けます。boundingArea_ が無効な場合、バウンディングエリアは画像全体になります。 | |
const std::string &text_, GravityType gravity_ | テキストで注釈を付けます(バウンディングエリアは画像全体)そして配置グラビティを指定します。 | |
|
const double radius_ = 1, const double sigma_ = 0.5 | 画像をぼかします。radius_ パラメータは、中心画素を除くガウス関数の半径(画素単位)を指定します。sigma_ パラメータは、ラプラシアンの標準偏差(画素単位)を指定します。 |
|
const Geometry &geometry_ = "6x6+0+0" | 画像に境界線を追加します。境界線の色は、borderColor 属性で指定されます。 |
|
const double radius_ = 1, const double sigma_ = 0.5 | チャコール効果画像(チャコールスケッチのように見えます)。radius_ パラメータは、中心画素を除くガウス関数の半径(画素単位)を指定します。sigma_ パラメータは、ラプラシアンの標準偏差(画素単位)を指定します。 |
|
const Geometry &geometry_ | 画像を切り取ります(画像の垂直または水平な部分領域を除去します) |
|
const size_t opacityRed_, const size_t opacityGreen_, const size_t opacityBlue_, const Color &penColor_ | 赤、緑、青の量子に対する指定されたパーセントの不透明度を使用して、ペンカラーで画像を着色します。 |
const size_t opacity_, const Color &penColor_ | 指定されたパーセントの不透明度を使用して、ペンカラーで画像を着色します。 | |
|
const std::string &comment_ | 画像にコメント文字列を追加します。デフォルトでは、各画像にはファイル名がコメントとして付けられます。このメソッドを使用して、画像に特定のコメントを割り当てます。必要に応じて、特殊なフォーマット文字 を埋め込むことで、画像のファイル名、タイプ、幅、高さ、その他の属性を含めることができます。 |
|
const Image &compositeImage_, ssize_t xOffset_, ssize_t yOffset_, CompositeOperator compose_ = InCompositeOp | 指定されたオフセットとアルゴリズムを使用して、画像を別の画像に合成します。 |
const Image &compositeImage_, const Geometry &offset_, CompositeOperator compose_ = InCompositeOp | ||
|
void | 画像を圧縮します(メモリ内の画像を再ランレングスエンコードします)。 |
|
size_t sharpen_ | 画像のコントラストを調整します(画像の強度差を強調します)。 |
|
const Geometry &geometry_ | 画像を切り取ります(元の画像の部分領域)。 |
Image |
int amount_ | 画像のカラーマップを循環させます。 |
|
void | 画像のスペックルノイズを低減します。 |
|
const Drawable &drawable_ | 画像に図形またはテキストを描画します。 |
const std::list<Drawable > &drawable_ | STLリストに含まれるDrawableオブジェクトのセットを使用して、画像に図形またはテキストを描画します。このメソッドを使用すると、描画パフォーマンスが向上し、繰り返し使用するために描画オブジェクトをリストにまとめてバッチ処理できます。 | |
|
size_t radius_ = 0.0 | 画像のエッジを強調表示します。半径は画素近傍の半径です。自動的な半径選択を行うには、半径をゼロに指定します。 |
|
const double radius_ = 1, const double sigma_ = 0.5 | 画像にエンボス効果(3D効果でエッジを強調表示)を適用します。radius_ パラメータは、中心画素を除くガウス関数の半径(画素単位)を指定します。sigma_ パラメータは、ラプラシアンの標準偏差(画素単位)を指定します。 |
|
void | 画像を鮮鋭化します(ノイズを最小化します)。 |
|
void | 画像のヒストグラム均等化を行います。 |
|
void | 画像を反転します(各走査線を垂直方向に反転します)。 |
ColorImage |
ssize_t x_, ssize_t y_, const Color &fillColor_ | ターゲット画素の色と一致し、ターゲット画素の隣接画素である画素全体に色を塗りつぶします。色のマッチングを決定する際に、現在のファジネス設定を使用します。 |
const Geometry &point_, const Color &fillColor_ | ||
ssize_t x_, ssize_t y_, const Color &fillColor_, const Color &borderColor_ | ターゲット画素から開始し、指定された境界線の色と一致する画素で停止する画素全体に色を塗りつぶします。色のマッチングを決定する際に、現在のファジネス設定を使用します。 | |
const Geometry &point_, const Color &fillColor_, const Color &borderColor_ | ||
TextureImage |
ssize_t x_, ssize_t y_, const Image &texture_ | ターゲット画素の色と一致し、ターゲット画素の隣接画素である画素全体にテクスチャを塗りつぶします。色のマッチングを決定する際に、現在のファジネス設定を使用します。 |
const Geometry &point_, const Image &texture_ | ||
ssize_t x_, ssize_t y_, const Image &texture_, const Color &borderColor_ | ターゲット画素から開始し、指定された境界線の色と一致する画素で停止する画素全体にテクスチャを塗りつぶします。色のマッチングを決定する際に、現在のファジネス設定を使用します。 | |
const Geometry &point_, const Image &texture_, const Color &borderColor_ | ||
|
void | 画像を反転します(各走査線を水平方向に反転します)。 |
|
const Geometry &geometry_ = "25x25+6+6" | 画像の周りに装飾的な枠を追加します。 |
size_t width_, size_t height_, ssize_t x_, ssize_t y_, ssize_t innerBevel_ = 0, ssize_t outerBevel_ = 0 | ||
|
double gamma_ | 画像のガンマ補正を行います(赤、緑、青の均一な補正)。 |
double gammaRed_, double gammaGreen_, double gammaBlue_ | 画像の赤、緑、青のチャンネルのガンマ補正を行います。 | |
|
double width_, double sigma_ | 画像をガウスぼかしします。「width_」は畳み込みマスクに含める隣接画素の数を指定します。たとえば、幅が1の場合は(標準的な)3x3の畳み込みマスクになります。「sigma_」はガウス曲線の標準偏差を指定します。 |
|
double factor_ | 画像を内側に折り畳みます(特殊効果)。 |
|
const Image &phaseImage_, const bool magnitude_ | 画像の逆離散フーリエ変換(DFT)を、大きさ/位相または実数/虚数画像ペアとして実装します。 |
|
const string &label_ | 画像にラベルを割り当てます。このオプションを使用して、画像に特定のラベルを割り当てます。必要に応じて、特殊なフォーマット文字 を埋め込むことで、画像のファイル名、タイプ、幅、高さ、またはシーン番号をラベルに含めることができます。文字列の最初の文字が「@」の場合、画像ラベルは文字列の残りの文字で指定されたファイルから読み取られます。Postscriptに変換する際には、このオプションを使用して、画像の上に印刷するヘッダー文字列を指定します。 |
levelImage |
const double black_point, const double white_point, const double mid_point=1.0 |
画像のレベルを調整します。指定された白と黒の点の間に収まる色を、利用可能な量子範囲全体にスケーリングすることによって、画像のレベルを調整します。提供されたパラメータは、黒点、中間点(ガンマ)、白点を表します。黒点は画像の中で最も暗い色を指定します。黒点より暗い色はゼロに設定されます。中間点(ガンマ)は画像に適用するガンマ補正を指定します。白点は画像の中で最も明るい色を指定します。白点より明るい色は最大量子値に設定されます。黒点と白点は0からQuantumRangeの有効範囲を持ち、中間点(ガンマ)は0から10の範囲が有効です。 |
levelChannelImage |
const Magick::ChannelType channel, const double black_point, const double white_point, const double mid_point=1.0 |
画像チャンネルのレベルを調整します。指定された白と黒の点の間に収まる値を、利用可能な量子範囲全体にスケーリングすることによって、画像チャンネルのレベルを調整します。提供されたパラメータは、黒点、中間点(ガンマ)、白点を表します。黒点は画像の中で最も暗い色を指定します。黒点より暗い色はゼロに設定されます。中間点(ガンマ)は画像に適用するガンマ補正を指定します。白点は画像の中で最も明るい色を指定します。白点より明るい色は最大量子値に設定されます。黒点と白点は0からQuantumRangeの有効範囲を持ち、中間点(ガンマ)は0から10の範囲が有効です。 |
|
ChannelType layer_ | 画像からレイヤーを抽出します。このオプションを使用して、画像から特定のレイヤーを抽出します。たとえば、MatteLayer は、画像から不透明度値を抽出するのに役立ちます。 |
|
void | 画像を整数倍のサイズに拡大します。 |
|
const Image &mapImage_ , bool dither_ = false | 参照画像から最も近い色を使用して、画像の色を remapping します。画像にFloyd/Steinbergエラー拡散を適用するには、dither_をtrueに設定します。デフォルトでは、色の削減は、元の画像を最もよく表す最適な色のセットを選択します。あるいは、このオプションを使用して、画像ファイルから特定の色のセットを選択することもできます。 |
Image |
const Color &target_, unsigned int matte_, ssize_t x_, ssize_t y_, PaintMethod method_ | 指定された領域をマット値で塗りつぶします。 |
medianFilterImage | const double radius_ = 0.0 | 円形の近傍領域の中央値の色で、各画素コンポーネントを置き換えることによって画像をフィルタリングします。 |
|
void | 画像を整数倍のサイズに縮小します。 |
|
double brightness_, double saturation_, double hue_ | 画像の彩度、飽和度、輝度のパーセンテージを変調します。彩度と輝度の変調は、現在の値の比率です(変化なしの場合は1.0)。色相の変調は、現在の位置から-180度から+180度までの絶対回転であり、引数の範囲は0〜2.0に対応します(変化なしの場合は1.0)。 |
|
bool grayscale_ = false | 画像の色を反転します。各ピクセルを補色に置き換えます(白は黒に、黄は青に、など)。グレースケールのみを反転するには、グレースケールに設定します。 |
|
void | 画像の正規化(ピクセル値を正規化して色の値の全範囲に広げることでコントラストを向上させます)。 |
|
size_t radius_ = 3 | 油絵のような画像を作成します。 |
|
size_t opacity_ | 画像の不透明度チャネルを設定または減衰させます。画像ピクセルが不透明な場合は、指定された不透明度値に設定され、そうでない場合は、指定された不透明度値とブレンドされます。opacity_の値は0(完全に不透明)からQuantumRangeの範囲です。完全に不透明または完全に透明をそれぞれ指定するために、OpaqueOpacityとTransparentOpacityが定義されています。 |
|
const Color &opaqueColor_, const Color &penColor_ | opaqueColor_と一致するピクセルの色を、指定されたpenColor_に変更します。 |
|
bool measureError_ = false | 画像の量子化(色の数を削減します)。誤差属性を計算するには、measureError_をtrueに設定します。 |
|
const Geometry &geometry_ = "6x6+0+0", bool raisedFlag_ = false | 画像を浮かび上がらせる(画像の端を明るくまたは暗くして、3Dの浮き上がりまたは沈み込み効果を与えます)。 |
Image |
void | ノイズピーク除去フィルタを使用して、画像のノイズを削減します。 |
size_t order_ | ||
|
int columns_, ssize_t rows_ | 画像をロールします(画像を垂直方向と水平方向に、指定された列数と行数だけロールします)。 |
|
double degrees_ | 画像を反時計回りに指定された角度だけ回転します。 |
|
const Geometry &geometry_ | ピクセルサンプリングアルゴリズムを使用して画像のサイズを変更します。 |
|
const Geometry &geometry_ | 単純な比率アルゴリズムを使用して画像のサイズを変更します。 |
|
double clusterThreshold_ = 1.0, double smoothingThreshold_ = 1.5 |
ファジークラスター法を用いて色成分のヒストグラムを分析し、均質な単位を特定することで、画像の類似したコンポーネントをセグメント化(統合)します。また、quantizeColorSpaceとverbose画像属性も使用します。clusterThreshold_を、有効とみなされるために各クラスタが超える必要があるピクセル数として指定します。SmoothingThreshold_はヒストグラムの2次導関数のノイズを除去します。値を増やすと、より滑らかな2次導関数になります。デフォルトは1.5です。 |
|
double azimuth_ = 30, double elevation_ = 30, bool colorShading_ = false |
遠方の光源を使用して画像に陰影を付けます。azimuth_とelevation_を光源の位置として指定します。デフォルトでは、陰影はグレースケールの画像になります。画像の赤、緑、青のコンポーネントに陰影を付けるには、colorShading_をtrueに設定します。 |
|
const double radius_ = 1, const double sigma_ = 0.5 | 画像のピクセルをシャープにします。radius_パラメータは、中心ピクセルを含まないガウスの半径(ピクセル単位)を指定します。sigma_パラメータは、ラプラシアンの標準偏差(ピクセル単位)を指定します。 |
|
const Geometry &geometry_ | 画像の端からピクセルを切り取ります。 |
|
double xShearAngle_, double yShearAngle_ | 画像をシアリングします(画像をX軸またはY軸に沿ってスライドさせることで平行四辺形を作成します)。シアリングは画像の一辺をX軸またはY軸に沿ってスライドさせ、平行四辺形を作成します。X方向のシアリングはX軸に沿って一辺をスライドさせ、Y方向のシアリングはY軸に沿って一辺をスライドさせます。シアリングの量はシアリング角度によって制御されます。X方向のシアリングでは、x度はY軸を基準に測定され、同様にY方向のシアリングでは、y度はX軸を基準に測定されます。画像のシアリングによって残された空の三角形は、borderColorとして定義された色で塗りつぶされます。 |
|
double factor_ | 画像をソーラライズします(写真フィルムを現像中に光にさらしたときに発生する効果に似ています)。 |
|
size_t amount_ = 3 | 指定された量だけ画像内でピクセルをランダムに広げます。 |
|
const Image &watermark_ | 画像にデジタル透かしを追加します(2番目の画像に基づきます)。 |
|
const Image &rightImage_ | 赤青メガネで見たときに立体的に見える画像を作成します(左側に赤の画像、右側に青の画像)。 |
|
double degrees_ | 画像を渦巻き状にします(画像ピクセルは角度によって回転します)。 |
|
const Image &texture_ | 画像の背景にテクスチャを重ねます。 |
|
double threshold_ | 画像の閾値処理を行います。 |
|
const Geometry &imageGeometry_ | 画像とクロップジオメトリに基づいて画像を変換します。クロップジオメトリはオプションです。 |
const Geometry &imageGeometry_, const Geometry &cropGeometry_ | ||
|
const Color &color_ | マット画像を画像に追加し、色と一致するピクセルを透明にします。 |
|
void | 画像から背景色であるエッジを切り取ります。 |
|
double amplitude_ = 25.0, double wavelength_ = 150.0 | 正弦波に沿って画像を変更します。 |
|
const Geometry &geometry_ | 画像を指定されたサイズにズームします。 |
関数オブジェクトは、Imageオブジェクトのメソッドと同等の画像フレームに属性を設定するために使用できます。これらの関数オブジェクトを使用すると、`for_each()`を使用して複数の画像フレームにオプションを設定できます。for_each().
次のコードは、GIFアニメーションで色「赤」を透明にする方法の例です。
list<image> images; readImages( &images, "animation.gif" ); for_each ( images.begin(), images.end(), transparentImage( "red" ) ); writeImages( images.begin(), images.end(), "animation.gif" );
画像属性を設定するための利用可能な関数オブジェクトは次のとおりです。
|
|
|
|
|
bool | bool flag_ | 画像を単一の複数画像ファイルに結合します。 |
|
bool | bool flag_ | レンダリングされたPostscriptおよびPostscriptまたはTrueTypeフォントのアンチエイリアシングを制御します。デフォルトで有効になっています。 |
DelayImage |
size_t (0〜65535) | size_t delay_ | アニメーションシーケンスの次の画像を表示する前に経過する必要がある時間(1/100秒単位)(0〜65535)。このオプションは、Netscape内のGIF画像シーケンスのアニメーションを調整するのに役立ちます。 |
IterationsImage |
size_t | size_t iterations_ | アニメーションをループする反復回数(例:Netscapeループ拡張)。 |
ColorImage |
Color | const Color &color_ | 画像の背景色 |
TextureImage |
std::string | const string &texture_ | 背景テクスチャとして使用する画像。 |
Image |
Color | const Color &color_ | 画像の境界線の色 |
|
Color | const Color &boxColor_ | 注釈テキストがレンダリングされるベースカラー。 |
BluePrimaryImage |
double x & y | double x_, double y_ | 色度青の主要点(例:x=0.15、y=0.06) |
GreenPrimaryImage |
double x & y | double x_, double y_ | 色度緑の主要点(例:x=0.3、y=0.6) |
RedPrimaryImage |
double x & y | double x_, double y_ | 色度赤の主要点(例:x=0.64、y=0.33) |
WhitePointImage |
double x & y | double x_, double y_ | 色度白点(例:x=0.3127、y=0.329) |
|
double | double fuzz_ | この距離内の色は等しいとみなされます。いくつかのアルゴリズムはターゲットの色を検索します。デフォルトでは、色は正確でなければなりません。このオプションを使用して、RGB空間でターゲットの色に近い色を一致させます。 |
|
Color | size_t index_, const Color &color_ | カラーパレットインデックスの色。 |
colorSpaceImage | ColorspaceType | ColorspaceType colorSpace_ | 画像ピクセル色を表すために使用されるカラースペース(例:CMYK)。CMYKの場合を除き、画像ピクセルは常にRGBAとして格納されます。 |
|
CompositeOperator | CompositeOperator compose_ | 合成が暗黙的に使用される場合(画像のフラット化など)に使用される合成演算子。 |
Image |
CompressionType | CompressionType compressType_ | 画像の圧縮タイプ。デフォルトは、指定された画像ファイルの圧縮タイプです。 |
|
Geometry (default 72x72) | const Geometry &density_ | 画像の垂直方向と水平方向の解像度(ピクセル単位)。このオプションは、PostscriptまたはPortable Documentページをデコードするときの画像密度を指定します。多くの場合、psPageSizeと共に使用されます。 |
|
size_t (8または16) | size_t depth_ | 画像の深度。raw画像の読み書き時、または出力形式が複数の深度をサポートする場合にビット深度を指定するために使用されます。ImageMagickがコンパイルされた量子深度がデフォルトになります。 |
|
EndianType | EndianType endian_ | それをサポートする形式のエンディアンオプションを指定(または取得)します。 |
|
std::string | const std::string &fileName_ | 画像ファイル名。 |
|
Color | const Color &fillColor_ | 描画オブジェクトの塗りつぶしに使用する色。 |
|
FilterTypes | FilterTypes filterType_ | 画像のサイズ変更時に使用するフィルタ。使用される縮小フィルタは、画像のサイズ変更に必要な時間と結果の品質に大きな影響を与えます。デフォルトのフィルタはLanczosであり、これは画像の縮小時に良好な結果を得られることが示されています。 |
|
std::string | const std::string &font_ | テキストレンダリングフォント。フォントが完全に修飾されたXサーバーフォント名の場合、フォントはXサーバーから取得されます。TrueTypeフォントを使用するには、TrueTypeファイル名の前に@を付けます。それ以外の場合は、Postscriptフォント名(例:「helvetica」)を指定します。 |
Image |
size_t | size_t pointSize_ | テキストレンダリングフォントのポイントサイズ。 |
MethodImage |
size_t { 0 = 処分が指定されていない、 1 = グラフィックを処分しない、 3 = グラフィックを背景色で上書きする、 4 = グラフィックを前のグラフィックで上書きする。} |
size_t disposeMethod_ | レイヤの破棄方法。このオプションは、GIFアニメーションを作成するときに、連続するフレームがどのようにレンダリングされるか(前のフレームがどのように破棄されるか)を制御するために使用されます。 |
TypeImage |
InterlaceType | InterlaceType interlace_ | インターレーススキームの種類(デフォルトはNoInterlace)。このオプションは、RGBやYUVなどのraw画像形式のインターレーススキームの種類を指定するために使用されます。NoInterlaceはインターレースしないことを意味し、LineInterlaceはスキャンラインインターレースを使用し、PlaneInterlaceはプレーンインターレースを使用します。PartitionInterlaceはPlaneInterlaceに似ていますが、異なるプレーンは個々のファイル(例:image.R、image.G、image.B)に保存されます。インターレースGIFまたはプログレッシブJPEG画像を作成するには、LineInterlaceまたはPlaneInterlaceを使用します。 |
|
bool | bool isValid_ | 画像の有効性を設定します。引数がfalseの場合、有効な画像は空(無効)になります。 |
|
std::string | const std::string &label_ | 画像ラベル |
|
double | double lineWidth_ | 線、円、楕円などを描画する際の線幅。 Drawable を参照してください。 |
|
std::string | const std::string &magick_ | 画像フォーマットを取得します(例:「GIF」)。 |
|
bool | bool matteFlag_ | 画像に透過性がある場合trueになります。trueに設定すると、画像にマトリックスチャンネルがあればそれを保存し、なければ不透明なチャンネルを作成します。 |
|
Color | const Color &matteColor_ | 画像のマトリックス(フレーム)の色 |
Image |
bool | bool flag_ | 画像を白黒に変換します。 |
|
Geometry | const Geometry &pageSize_ | 画像キャンバスの推奨サイズと位置。
このオプションを使用して、Postscriptページの寸法と位置をインチあたりのドット数で、またはTEXTページの寸法をピクセルで指定します。このオプションは通常、density と組み合わせて使用されます。 Pageオプションは、GIF画像(アニメーションのシーンなど)の位置指定にも使用できます。 |
|
Color | const Color &penColor_ | 画像への注釈または描画時に使用するペンカラー。 |
|
Image | const Image & penTexture_ | (penColorと同様に)ペイントに使用するテクスチャ画像。 |
|
Color | size_t x_, size_t y_, const Color &color_ | 位置xとyのピクセルカラーを取得/設定します。 |
|
Geometry | const Geometry &pageSize_ | Postscriptページサイズ。このオプションを使用して、Postscriptページの寸法をインチあたりのドット数で、またはTEXTページの寸法をピクセルで指定します。このオプションは通常、densityと組み合わせて使用されます。 |
|
size_t (0~100) | size_t quality_ | JPEG/MIFF/PNGの圧縮レベル(デフォルトは75)。 |
ColorsImage |
size_t | size_t colors_ | 画像の推奨カラー数。画像の実際のカラー数はリクエスト数より少なくなる場合がありますが、多くなることはありません。このオプションで指定された数より少ないユニークな色を持つ画像は、重複または未使用の色が削除されます。 |
ColorSpaceImage |
ColorspaceType | ColorspaceType colorSpace_ | 色を量子化するカラー空間(デフォルトはRGB)。経験的証拠によると、YUVやYIQなどのカラー空間における距離は、RGB空間における距離よりも知覚的な色の違いによりよく対応しています。これらのカラー空間は、画像の色数を削減する際に、より良い結果を与える可能性があります。 |
DitherImage |
bool | bool flag_ | 画像にFloyd/Steinberg誤差拡散を適用します。ディザリングの基本的な戦略は、いくつかの隣接するピクセルの強度を平均化することで、強度解像度を空間解像度と交換することです。色数を減らす際に激しい輪郭が現れる画像は、このオプションで改善できます。このオプションを有効にするには、quantizeColorsまたはmonochromeオプションを設定する必要があります。 |
TreeDepthImage |
size_t (0~8) | size_t treeDepth_ | 量子化カラー分類ツリーの深さ。0または1の値は、色削減アルゴリズムに最適なツリーの深さを選択できます。2~8の値を使用して、ツリーの深さを手動で調整できます。 |
IntentImage |
RenderingIntent | RenderingIntent render_ | レンダリングインテントの種類 |
UnitsImage |
ResolutionType | ResolutionType units_ | 画像解像度の単位 |
|
size_t | size_t scene_ | 画像シーン番号 |
|
Geometry | const Geometry &geometry_ | 生画像(幅と高さの情報に対応していない画像)の幅と高さ。Sizeオプションは、マルチ解像度フォーマット(例:Photo CD、JBIG、JPEG)から読み込まれる画像サイズにも影響を与える場合があります。 |
|
void | 画像からすべてのプロファイルとコメントを削除します。 | |
|
Color | const Color &strokeColor_ | オブジェクトの輪郭を描画する際に使用する色 |
|
size_t | size_t subImage_ | 画像シーケンスのサブ画像 |
|
size_t | size_t subRange_ | ベース画像に対する画像数 |
|
std::string | const std::string &tileName_ | タイル名 |
|
ImageType | ImageType type_ | 画像の保存形式。 |
|
bool | bool verboseFlag_ | 画像に関する詳細情報を表示します。 |
|
std::string | const std::string &view_ | FlashPix表示パラメータ。 |
|
std::string (例: "hostname:0.0") | const std::string &display_ | 表示するX11ディスプレイ、フォントを取得するディスプレイ、または画像を取得するディスプレイ。 |
Magick++は、 coderInfoList() 関数を提供して、ImageMagickでサポートされている画像フォーマットに関する情報の取得をサポートしています。ImageMagickの画像フォーマットのサポートは、「コーダー」と呼ばれるモジュールによって提供されます。ユーザーが提供したコンテナは、ブール真理値表の一致に基づいて更新されます。真理値表は、ImageMagickがフォーマットを読み取れるか、書き込めるか、またはフォーマットに対して複数のフレームをサポートしているかどうかに基づいて一致させることをサポートします。ワイルドカード指定子は、任意の「気にしない」フィールドでサポートされています。coderInfoList() を介して取得されたデータは、GUIダイアログボックスの準備や、ImageMagickビルド内のサポートに基づいて書き込む出力形式を決定するのに役立つ可能性があります。
coderInfoListの定義は次のとおりです。
class CoderInfo { public: enum MatchType { AnyMatch, // match any coder TrueMatch, // match coder if true FalseMatch // match coder if false }; [ remaining CoderInfo methods ] } template <class Container > void coderInfoList( Container *container_, CoderInfo::MatchType isReadable_ = CoderInfo::AnyMatch, CoderInfo::MatchType isWritable_ = CoderInfo::AnyMatch, CoderInfo::MatchType isMultiFrame_ = CoderInfo::AnyMatch );
次の例は、画像の読み取りをサポートするすべてのコーダーのリストを取得し、コーダー属性を出力する方法を示しています(リストされているすべてのフォーマットは読み取り可能です)。
list<CoderInfo> coderList; coderInfoList( &coderList, // Reference to output list CoderInfo::TrueMatch, // Match readable formats CoderInfo::AnyMatch, // Don't care about writable formats CoderInfo::AnyMatch); // Don't care about multi-frame support list<CoderInfo>::iterator entry = coderList.begin(); while( entry != coderList.end() ) { cout << entry->name() << ": (" << entry->description() << ") : "; cout << "Readable = "; if ( entry->isReadable() ) cout << "true"; else cout << "false"; cout << ", "; cout << "Writable = "; if ( entry->isWritable() ) cout << "true"; else cout << "false"; cout << ", "; cout << "Multiframe = "; if ( entry->isMultiframe() ) cout << "true"; else cout << "false"; cout << endl; entry ++; }}
Magick++は、colorHistogram テンプレート関数を提供して、画像からカラーヒストグラムを取得します。カラーヒストグラムは、各色が画像に何回出現するかを示すカウントを提供します。ヒストグラムは、ユーザーが提供したコンテナ(例:<vector>または<map>)に書き込まれます。<map>が使用されると、Colorがキーとして使用されるため、色の使用回数を迅速に検索できます。<map>への書き込みは、<map>がエントリ(色強度で)をソートし、一意性を確認するため、<vector>への書き込みよりも遅くなる可能性があります。各ヒストグラムエントリは、std::pair<Magick::Color,unsigned long>型に含まれ、ペアの最初のメンバーはColor、ペアの2番目のメンバーはunsigned longです。<pair>の "first" メンバーを使用してColorにアクセスし、"second" メンバーを使用して画像の色が出現する回数をアクセスします。
テンプレート関数の宣言は次のとおりです。
template <class Container > void colorHistogram( Container *histogram_, const Image image)
次の例は、<map>と<vector>の両方を使用してカラーヒストグラムを取得し、フォーマットされた概要を出力する方法を示しています。
<map>の使用
Image image("image.miff"); map<Color,unsigned long> histogram; colorHistogram( &histogram, image ); std::map<Color,unsigned long>::const_iterator p=histogram.begin(); while (p != histogram.end()) { cout << setw(10) << (int)p->second << ": (" << setw(quantum_width) << (int)p->first.redQuantum() << "," << setw(quantum_width) << (int)p->first.greenQuantum() << "," << setw(quantum_width) << (int)p->first.blueQuantum() << ")" << endl; p++; }
Image image("image.miff"); std::vector<std::pair<Color,unsigned long> > histogram; colorHistogram( &histogram, image ); std::vector<std::pair<Color,unsigned long> >::const_iterator p=histogram.begin(); while (p != histogram.end()) { cout << setw(10) << (int)p->second << ": (" << setw(quantum_width) << (int)p->first.redQuantum() << "," << setw(quantum_width) << (int)p->first.greenQuantum() << "," << setw(quantum_width) << (int)p->first.blueQuantum() << ")" << endl; p++; }