Color Modes

PerlMagick, Perl API

インストール概要サンプルスクリプト画像の読み込みまたは書き込み画像の操作画像属性の設定画像属性の取得画像と再構築の比較画像モンタージュの作成ブロブの操作画像ピクセルへの直接アクセスその他のメソッド例外処理定数

PerlMagickは、ImageMagickに対するオブジェクト指向のPerlインターフェースです。このモジュールを使用すると、Perlスクリプト内から画像または画像シーケンスを読み込み、操作、または書き込むことができます。そのため、Web CGIスクリプトに非常に適しています。PerlMagickを適切にビルドするには、システムにImageMagick 6.5.5以上とPerlバージョン5.005_02以上がインストールされている必要があります。

PerlMagickの価値を示す多くの便利なスクリプトが利用可能です。MagickStudioを使用してWebベースの画像操作と変換を行ったり、L-システムを使用して数学的な構造を用いて植物の画像を作成したり、最後にWebMagick Image Navigatorを使用してサムネイル画像のコレクションをナビゲートして表示する画像を選択したりできます。

ImageMagick StudioでWebブラウザからPerlMagickを試すことができます。または、サンプルからPerlMagickの選択された機能を確認できます。

インストール

UNIX

PerlMagickは、システムRPMリポジトリから入手できますか?たとえば、CentOSシステムでは、このようにPerlMagickをインストールします

yum install ImageMagick-perl

そうでない場合は、ImageMagickソースディストリビューションからPerlMagickをインストールする必要があります。最新のソースリリースをダウンロードしてください。

次のコマンドでディストリビューションを展開します

tar xvzf ImageMagick.tar.gz

次に、ImageMagickを構成してコンパイルします


    $
    cd ImageMagick-7.1.1
    $ ./configure -with-perl
    $ make

ImageMagick / PerlMagickが問題なく構成およびコンパイルされたら、システムにインストールする準備ができています。インストールには管理者権限が必要です。インストールするには、次のように入力します

sudo make install

動的リンカのランタイムバインディングを構成する必要がある場合があります

sudo ldconfig /usr/local/lib

最後に、PerlMagickのインストールが正しく機能することを確認するには、次のように入力します

perl -MImage::Magick -le 'print Image::Magick->QuantumDepth'

おめでとうございます。ImageMagickの動作ディストリビューションがあり、PerlMagickを使用して画像を変換、合成、または編集する準備ができました。

Windows XP / Windows 2000

ImageMagickはすでにシステムにインストールされている必要があります。また、Windows 2000用のImageMagickソースディストリビューションが必要です。Visual C++またはJ++開発環境からのnmakeも必要です。\bin\IMagick.dll\bin\X11.dllを、c:\perl\site\5.00502などの動的ロードパスにあるディレクトリにコピーします。

次に、次のように入力します

cd PerlMagick
perl Makefile.nt
nmake
nmake install

回帰テストの実行

インストールが正しいことを確認するには、次のように入力します

make test

Windowsでは、nmake testを使用します。PerlMagickが実行できる多くの機能を実行するためのいくつかのデモスクリプトがあります。次のように入力します

ビルドフォルダーからテストを実行するには、proveユーティリティを使用します

prove --blib blib -I `pwd` -bv ./t/read.t
cd demo
make

これで、Perlスクリプト内からPerlMagickメソッドを利用する準備ができました。

概要

PerlMagickメソッドを使用するすべてのスクリプトは、まずその名前空間内でメソッドを定義し、イメージオブジェクトをインスタンス化する必要があります。これを行うには、次のようにします

use Image::Magick;

$image = Image::Magick->new;

PerlMagickは量子を認識します。イメージオブジェクトをインスタンス化するときに、特定の量子深度をリクエストできます

use Image::Magick::Q16;

$image = Image::Magick::Q16->new;

new()メソッドは、SetAttributeと同じパラメーターを受け取ります。たとえば、

$image = Image::Magick->new(size=>'384x256');

次に、画像または画像シーケンスを読み込み、操作してから、表示または書き込む必要があります。PerlMagickの入力および出力メソッドは、画像の読み込みまたは書き込みで定義されています。画像の読み取りまたは書き込み方法に影響を与えるメソッドについては、画像属性の設定を参照してください。画像を変換するためのメソッドのリストについては、画像の操作を参照してください。画像属性の取得では、画像の属性を取得する方法について説明します。背景にサムネイルとして画像をタイル表示する方法の詳細については、画像モンタージュの作成を参照してください。最後に、一部のメソッドは、上記で説明したカテゴリのいずれにもうまく適合しません。これらのメソッドのリストについては、その他のメソッドを確認してください。

PerlMagickオブジェクトが不要になったら、破棄することを検討する必要があります。画像シーケンス内の各画像は仮想メモリに格納されます。これにより、最大でメビバイトのメモリが追加される可能性があります。PerlMagickオブジェクトを破棄すると、メモリは他のPerlメソッドで使用するために返されます。オブジェクトを破棄する推奨される方法は、undefを使用することです

undef $image;

すべての画像を削除するが、Image::Magickオブジェクトを保持するには、次のように使用します

@$image = ();

最後に、複数画像シーケンスから単一の画像を削除するには、次のように使用します

undef $image->[$x];

次のセクションでは、さまざまなPerlMagickメソッドを使用して画像シーケンスを操作する方法について説明します。

PerlMagickメソッドの一部には、Ghostscriptなどの外部プログラムが必要です。これを適切に動作させるには、PATH環境変数に明示的なパスが必要になる場合があります。たとえば(Linuxの場合)、

$ENV{PATH}' . "='/../bin:/usr/bin:/usr/local/bin';

サンプルスクリプト

開始するためのサンプルスクリプトを次に示します

#!/usr/local/bin/perl
use Image::Magick;
my($image, $x);
$image = Image::Magick->new; $x = $image->Read('girl.png', 'logo.png', 'rose.png'); warn "$x" if "$x";
$x = $image->Crop(geometry=>'100x100+100+100'); warn "$x" if "$x";
$x = $image->Write('x.png'); warn "$x" if "$x";

スクリプトは3つの画像を読み取り、それらを切り抜いて、単一の画像をGIFアニメーションシーケンスとして書き込みます。多くの場合、シーケンスの個々の画像にアクセスする必要がある場合があります。次の例では、これがどのように行われるかを示します

#!/usr/local/bin/perl
use Image::Magick;
my($image, $p, $q);
$image = new Image::Magick; $image->Read('x1.png'); $image->Read('j*.jpg'); $image->Read('k.miff[1, 5, 3]'); $image->Contrast(); for ($x = 0; $image->[$x]; $x++) { $image->[$x]->Frame('100x200') if $image->[$x]->Get('magick') eq 'GIF'; undef $image->[$x] if $image->[$x]->Get('columns') < 100; } $p = $image->[1]; $p->Draw(stroke=>'red', primitive=>'rectangle', points=>20,20 100,100'); $q = $p->Montage(); undef $image; $q->Write('x.miff');

中央に赤いピクセルがある100 x 100ピクセルの白いキャンバスから開始するとします。次を試してください

$image = Image::Magick->new;
$image->Set(size=>'100x100');
$image->ReadImage('canvas:white');
$image->Set('pixel[49,49]'=>'red');

ここでは、(1,1)での赤色の成分の強度を半分に減らします

@pixels = $image->GetPixel(x=>1,y=>1);
$pixels[0]*=0.5;
$image->SetPixel(x=>1,y=>1,color=>\@pixels);

または、カラー画像をグレースケールに変換するとします

$image->Quantize(colorspace=>'gray');

Taipai TrueTypeフォントで画像に注釈を付けましょう

$text = 'Works like magick!';
$image->Annotate(font=>'kai.ttf', pointsize=>40, fill=>'green', text=>$text);

おそらく、画像からすべてのピクセル強度を抽出し、それらをSTDOUTに書き込みたいと考えています

@pixels = $image->GetPixels(map=>'I', height=>$height, width=>$width, normalize=>true);
binmode STDOUT;
print pack('B*',join('',@pixels));

PerlMagickオブジェクトで実行できる他の巧妙な操作には、次のようなものがあります

$i = $#$p"+1";   # return the number of images associated with object p
push(@$q, @$p);  # push the images from object p onto object q
@$p = ();        # delete the images but not the object p
$p->Convolve([1, 2, 1, 2, 4, 2, 1, 2, 1]);   # 3x3 Gaussian kernel

画像の読み込みまたは書き込み

以下のメソッドを使用して、画像または画像シーケンスを読み取り、書き込み、または表示します

読み取り/書き込みメソッド
メソッド パラメーター 戻り値 説明
Read 1つ以上のファイル名 読み込まれた画像の数 画像または画像シーケンスを読み取る
Write ファイル名 書き込まれた画像の数 画像または画像シーケンスを書き込む
Display サーバー名 表示された画像の数 画像または画像シーケンスをXサーバーに表示する
Animate サーバー名 アニメーション化された画像の数 画像シーケンスをXサーバーにアニメーション化する

便宜上、Write()、Display()、Animate()メソッドは、SetAttributeが認識するパラメーターを受け取ることができます。たとえば、

$image->Write(filename=>'image.png', compression=>'None');

メソッドRead()で標準入力から読み取るか、メソッドWrite()で標準出力に書き込む場合は、ファイル名として-を使用します

binmode STDOUT;
$image->Write('png:-');

PERLファイルハンドルからGIF形式で画像を読み取るには、次のように使用します

$image = Image::Magick->new;
open(IMAGE, 'image.gif');
$image->Read(file=>\*IMAGE);
close(IMAGE);

PERLファイルハンドルにPNG形式で画像を書き込むには、次のように使用します

$filename = "image.png";
open(IMAGE, ">$filename");
$image->Write(file=>\*IMAGE, filename=>$filename);
close(IMAGE);

注:ImageMagickとActiveState Perlディストリビューション間でCランタイムライブラリのバージョンが異なる場合、またはDLLの1つが/MTオプションでリンクされている場合、WindowsではPerlファイルハンドルからの読み取りまたは書き込みが失敗する可能性があります。詳細については、DLL境界を越えてCRTオブジェクトを渡す場合の潜在的なエラーを参照してください。

ファイル名に%0Nd、%0No、または%0Nxが表示されている場合、printf形式の指定として解釈され、指定された10進数、8進数、または16進数のシーン番号エンコードに置き換えられます。たとえば、

image%03d.miff

ファイルimage000.miff、image001.miffなどを変換します。

オプションで、任意のメソッド名にImageを追加できます。たとえば、ReadImage()はメソッドRead()のエイリアスです。

画像の操作

たとえば、メソッドReadImage()で画像を作成したら、その画像を操作する必要があります。以下は、PerlMagickで使用できるすべての画像操作メソッドのリストです。選択されたPerlMagickメソッドのサンプルがあります。画像操作メソッドの呼び出し例を次に示します

$image->Crop(geometry=>'100x100+10+20');
$image->[$x]->Frame("100x200");

また、呼び出すことができるその他の画像操作メソッドのリストを次に示します

画像操作メソッド
メソッド パラメーター 説明
AdaptiveBlur geometry=>geometry, radius=>double, sigma=>double, bias=>double, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 指定された半径と標準偏差(シグマ)のガウス演算子で画像を適応的にぼかします。エッジ付近の効果を低下させます。
AdaptiveResize geometry=>geometry, width=>integer, height=>integer, filter=>{Point, Box, Triangle, Hermite, Hanning, Hamming, Blackman, Gaussian, Quadratic, Cubic, Catrom, Mitchell, Lanczos, Bessel, Sinc}, support=>double, blur=>double データ依存の三角測量を使用して画像を適応的にサイズ変更します。blur > 1を指定するとぼやけ、< 1を指定するとシャープになります。
AdaptiveSharpen geometry=>geometry, radius=>double, sigma=>double, bias=>double, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 指定された半径と標準偏差(シグマ)のガウス演算子で画像を適応的にシャープにします。エッジ付近の効果を増加させます。
AdaptiveThreshold geometry=>geometry, width=>integer, height=>integer, bias=>double ローカルな適応型閾値処理。
AddNoise noise=>{Uniform, Gaussian, Multiplicative, Impulse, Laplacian, Poisson}, attenuate=>double, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 画像にノイズを追加します
AffineTransform affine=>float値の配列, translate=>float, float, scale=> float, float, rotate=>float, skewX=>float, skewY=>float, interpolate={Average, Bicubic, Bilinear, Filter, Integer, Mesh, NearestNeighbor}, background=>色名 アフィン変換画像
Affinity image=>image-handle, method=>{None, FloydSteinberg, Riemersma} この画像から特定の色セットを選択します
Annotate text=>string, font=>string, family=>string, style=>{Normal, Italic, Oblique, Any}, stretch=>{Normal, UltraCondensed, ExtraCondensed, Condensed, SemiCondensed, SemiExpanded, Expanded, ExtraExpanded, UltraExpanded}, weight=>integer, pointsize=>integer, density=>geometry, stroke=>色名, strokewidth=>integer, fill=>色名, undercolor=>色名, kerning=>float, geometry=>geometry, gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}, antialias=>{true, false}, x=>integer, y=>integer, affine=>float値の配列, translate=>float, float, scale=>float, float, rotate=>float. skewX=>float, skewY=> float, align=>{Left, Center, Right}, encoding=>{UTF-8}, interline-spacing=>double, interword-spacing=>double, direction=>{right-to-left, left-to-right}, decorate=>{none, underline, overline, line-through}, word-break=>{normal, break-word} 画像にテキストで注釈を付けます。テキストをレンダリングせずにフォントメトリックを取得するには、QueryFontMetricsを参照してください。
AutoGamma channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 画像のガンマレベルを自動的に調整します
AutoLevel channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 画像のカラーレベルを自動的に調整します
AutoOrient
表示に適した向きになるように画像を調整します(つまり、左上向き)。
AutoThreshold method=>{Kapur, OTSU, Triangle} 自動的に画像閾値処理を実行します
BilateralSmoothing geometry=>geometry, width=>integer, height=>integer, intensity-sigma=>double, spatial-sigma=>double, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 画像用の非線形、エッジ保持、ノイズ低減スムージングフィルターです。各ピクセルの強度を、近くのピクセルからの強度値の加重平均で置き換えます。この重みはガウス分布に基づいています。重みはピクセルのユークリッド距離だけでなく、放射線量の違い(例えば、色の強度、深度距離など)にも依存します。これにより、シャープなエッジが保持されます。強度と空間シグマのデフォルト値は、それぞれ 2*直径0.5*直径 です。
BlackThreshold threshold=>color, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} しきい値強度を下回るすべてのピクセルを黒に強制します
BlueShift factor=>double, 月明かりの下での夜間のシーンをシミュレートします。1.5の係数から始めます。
Blur geometry=>geometry, radius=>double, sigma=>double, bias=>double, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 指定された半径と標準偏差(シグマ)を持つガウス演算子で、画像のノイズを減らし、詳細レベルを下げます。
Border geometry=>geometry, width=>integer, height=>integer, bordercolor=>色名, compose=>{Undefined, Add, Atop, Blend, Bumpmap, Clear, ColorBurn, ColorDodge, Colorize, CopyBlack, CopyBlue, CopyCMYK, Cyan, CopyGreen, Copy, CopyMagenta, CopyAlpha, CopyRed, RGB, CopyYellow, Darken, Dst, Difference, Displace, Dissolve, DstAtop, DstIn, DstOut, DstOver, Dst, Exclusion, HardLight, Hue, In, Lighten, Luminize, Minus, Modulate, Multiply, None, Out, Overlay, Over, Plus, ReplaceCompositeOp, Saturate, Screen, SoftLight, Src, SrcAtop, SrcIn, SrcOut, SrcOver, Src, Subtract, Threshold, Xor }, 画像を指定した色の枠で囲みます
CannyEdge geometry=>geometry, radius=>double, sigma=>double, 'lower-percent'=>double, 'upper-percent'=>double マルチステージアルゴリズムを使用して、画像内の幅広いエッジを検出します(例:CannyEdge('0x1+10%+40%'))。
Charcoal geometry=>geometry, radius=>double, sigma=>double 木炭画をシミュレートします
Chop geometry=>geometry, width=>integer, height=>integer, x=>integer, y=>integer, gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} 画像を切り取ります
CLAHE geometry=>geometry, width=>integer, height=>integer, number-bins=>integer, clip-limit=>double コントラスト制限付き適応ヒストグラム平坦化。widthheightは画像をタイルに分割します。number-binsはタイルごとのヒストグラムビン数です(最小2、最大256)。clip-limitは、ローカライズされたコントラスト変化に対するコントラスト制限です。2〜3のクリップ制限が良い開始点です。
Clamp channel=>{Red, RGB, All, etc.} 値が0未満のピクセルを0に設定し、値が量子範囲を超えるピクセルを量子範囲(例:65535)に設定します。それ以外の場合、ピクセル値は変更されません。
Clip id=>name, inside=>{true, false}, 8BIMプロファイルから名前付きパスに沿って適用します。
ClipMask mask=>image-handle 画像マスクで定義されているように画像をクリップします
Clut image=>image-handle, interpolate={Average, Bicubic, Bilinear, Filter, Integer, Mesh, NearestNeighbor}, channel=>{Red, RGB, All, etc.} 画像シーケンスにカラー検索テーブルを適用します
Color color=>色名 画像全体をこの色に設定します。
ColorDecisionList filename=>string, カラーデシジョンリストで色を補正します。
Colorize fill=>色名, blend=>string 塗りつぶし色で画像をカラー化します
ColorMatrix matrix=>float値の配列 画像に色補正を適用します。可変サイズの行列を使用できますが、通常はRGBA画像には5 x 5、CMYKAには6x6を使用します。オフセットには6x6行列が必要です(最後の列に正規化された値を入力します)。
Colorspace colorspace=>{RGB, Gray, Transparent, OHTA, XYZ, YCbCr, YCC, YIQ, YPbPr, YUV, CMYK} 画像の色空間を設定します
Comment string 画像にコメントを追加します
ColorThreshold start-color=>color, stop-color=>color, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} しきい値強度を下回るすべてのピクセルを黒に強制します
CompareLayers method=>{any, clear, overlay} シーケンス内の各画像を次の画像と比較し、検出したピクセルの違いの最小境界領域を返します。画像は同じサイズである必要はありませんが、すべての画像が合体されている(すべての画像が同じサイズで、フラット化されたキャンバス上にあるため、特定のフレームがどのように見えるかを正確に表す)ことが最善です。
Composite image=>image-handle, compose=>{Undefined, Add, Atop, Blend, Bumpmap, Clear, ColorBurn, ColorDodge, Colorize, CopyBlack, CopyBlue, CopyCMYK, Cyan, CopyGreen, Copy, CopyMagenta, CopyAlpha, CopyRed, RGB, CopyYellow, Darken, Dst, Difference, Displace, Dissolve, DstAtop, DstIn, DstOut, DstOver, Dst, Exclusion, HardLight, Hue, In, Lighten, Luminize, Minus, Modulate, Multiply, None, Out, Overlay, Over, Plus, ReplaceCompositeOp, Saturate, Screen, SoftLight, Src, SrcAtop, SrcIn, SrcOut, SrcOver, Src, Subtract, Threshold, Xor }, mask=>image-handle, geometry=>geometry, x=>integer, y=>integer, gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}, opacity=>integer, tile=>{True, False}, rotate=>double, color=>色名, blend=>geometry, interpolate=>{undefined, average, bicubic, bilinear, filter, integer, mesh, nearest-neighbor, spline}, clip-to-self=>{True, False} ある画像を別の画像に合成します。tileパラメータと連携してrotateパラメータを使用します。
ConnectedComponents connectivity=>integer, 一意にラベル付けされた連結成分。4方向または8方向の連結から選択します。
Contrast sharpen=>{True, False} 画像のコントラストを強調または低減します
ContrastStretch levels=>string, 'black-point'=>double, 'white-point'=>double, channel=>{Red, RGB, All, etc.} 強度値の範囲を「ストレッチ」することにより、画像のコントラストを改善します
Convolve coefficients=>float値の配列, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, bias=>double 畳み込みカーネルを画像に適用します。カーネルのorderが与えられた場合、order*order個のfloat値(例:3x3は9個の値を意味する)を指定します。
CopyPixels image=>image-handle, geometry=>geometry, width=>integer, height=>integer, x=>integer, y=>integer, offset=>geometry, gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}, dx=>integer, dy=>integer widthxheight+x+yで定義された画像を、オフセット+dx、+dyで画像にコピーします。
Crop geometry=>geometry, width=>integer, height=>integer, x=>integer, y=>integer, fuzz=>double, gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} 画像を切り抜きます
CycleColormap amount=>integer 画像カラーマップを指定量だけずらします
Decipher passphrase=>string 暗号化されたピクセルをプレーンピクセルに変換します
Deconstruct
画像シーケンスを構成要素に分解します
Deskew geometry=>string,threshold=>double 画像をまっすぐにします
Despeckle 画像内のスペックルを減らします
Difference image=>image-handle 2つの画像間の差分メトリクスを計算します
Distort points=>float値の配列, method=>{Affine, AffineProjection, ScaleRotateTranslate, SRT, Perspective, PerspectiveProjection, BilinearForward, BilinearReverse, Polynomial, Arc, Polar, DePolar, Barrel, BarrelInverse, Shepards, Resize}, 'virtual-pixel'=>{Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White}, 'best-fit'=>{True, False} 画像を歪ませます
Draw primitive=>{point, line, rectangle, arc, ellipse, circle, path, polyline, polygon, bezier, color, matte, text, @filename}, points=>string , method=>{Point, Replace, Floodfill, FillToBorder, Reset}, stroke=>色名, fill=>色名, font=>string, pointsize=>integer, strokewidth=>float, antialias=>{true, false}, bordercolor=>色名, x=>float, y=>float, dash-offset=>float, dash-pattern=>float値の配列, affine=>float値の配列, translate=>float, float, scale=>float, float, rotate=>float, skewX=>float, skewY=>float, interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline}, kerning=>float, text=>string, vector-graphics=>string, interline-spacing=>double, interword-spacing=>double, direction=>{right-to-left, left-to-right}, word-break=>{normal, break-word} 1つ以上のグラフィックプリミティブで画像に注釈を付けます。
Encipher passphrase=>string プレーンピクセルを暗号化されたピクセルに変換します
Edge radius=>double 指定された半径の畳み込みフィルターを使用して、画像内のエッジを強調します。
Emboss geometry=>geometry, radius=>double, sigma=>double 指定された半径と標準偏差(シグマ)の畳み込みフィルターを使用して画像をエンボス処理します。
Enhance
ノイズの多い画像を強調するためにデジタルフィルターを適用します
Equalize channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}
画像にヒストグラム均等化を実行します
Extent geometry=>geometry, width=>integer, height=>integer, x=>integer, y=>integer, fuzz=>double, background=>色名, gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} 画像サイズを設定します
Evaluate value=>double, operator=>{Add, And, Divide, LeftShift, Max, Min, Multiply, Or, Rightshift, RMS, Subtract, Xor}, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 画像に算術式、関係式、または論理式を適用します
Filter kernel=>string, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, bias=>double 畳み込みカーネルを画像に適用します。
Flip
画像の走査線を垂直方向に反射します
Flop
画像の走査線を水平方向に反射します
FloodfillPaint geometry=>geometry, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, x=>integer, y=>integer , fill=>色名, bordercolor=>色名, fuzz=>double, invert=>{True, False} ターゲットピクセルの色と一致し、隣接するピクセルの色の値を変更します。境界色を指定した場合、その色ではない隣接ピクセルの色の値が変更されます。
ForwardFourierTransform magnitude=>{True, False} 順方向離散フーリエ変換(DFT)を実装します
Frame geometry=>geometry, width=>integer, height=>integer, inner=>integer, outer=>integer, fill=>色名, compose=>{Undefined, Add, Atop, Blend, Bumpmap, Clear, ColorBurn, ColorDodge, Colorize, CopyBlack, CopyBlue, CopyCMYK, Cyan, CopyGreen, Copy, CopyMagenta, CopyAlpha, CopyRed, RGB, CopyYellow, Darken, Dst, Difference, Displace, Dissolve, DstAtop, DstIn, DstOut, DstOver, Dst, Exclusion, HardLight, Hue, In, Lighten, Luminize, Minus, Modulate, Multiply, None, Out, Overlay, Over, Plus, ReplaceCompositeOp, Saturate, Screen, SoftLight, Src, SrcAtop, SrcIn, SrcOut, SrcOver, Src, Subtract, Threshold, Xor }, 装飾的な枠で画像を囲みます
Function parameters=>float値の配列, function=>{Sin}, 'virtual-pixel'=>{Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White} 画像に関数を適用します
Gamma gamma=>文字列, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 画像のガンマ補正を行います。
GaussianBlur geometry=>geometry, radius=>double, sigma=>double, bias=>double, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 指定された半径と標準偏差(シグマ)を持つガウス演算子で、画像のノイズを減らし、詳細レベルを下げます。
GetPixel geometry=>ジオメトリ, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, normalize=>{true, false}, x=>整数, y=>整数 単一のピクセルを取得します。デフォルトでは、正規化されたピクセル値が返されます。
GetPixels geometry=>ジオメトリ, width=>整数, height=>整数, x=>整数, y=>整数, map=>文字列, normalize=>{true, false} マップ(例:"RGB"、"RGBA"など)で定義された画像のピクセルを取得します。デフォルトでは、正規化されていないピクセル値が返されます。
Grayscale channel=>{Average, Brightness, Lightness, Rec601Luma, Rec601Luminance, Rec709Luma, Rec709Luminance, RMS} 画像をグレースケールに変換します。
HaldClut image=>画像ハンドル, channel=>{Red, RGB, All, etc.} Haldカラー参照テーブルを画像シーケンスに適用します。
HoughLine geometry=>ジオメトリ, width=>double, height=>double, threshold=>double 画像内の線を識別します(例:HoughLine('9x9+195'))。
Identify file=>ファイル, features=>距離, moments=>{True, False}, unique=>{True, False} 画像の属性を識別します。
Implode amount=>double, interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} 画像のピクセルを中心に向かって内側に変形させます。
Integral   画像内の値(ピクセル値)の合計を計算します。
InverseDiscreteFourierTransform magnitude=>{True, False} 逆離散フーリエ変換(DFT)を実装します。
Kmeans geometry=>ジオメトリ, 'colors'=>double, 'iterations'=>double, 'tolerance'=>double K平均法による色数削減を行います。
Kuwahara geometry=>geometry, radius=>double, sigma=>double, bias=>double, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} エッジを保持するノイズリダクションフィルター。
Label string 画像にラベルを割り当てます。
Layers method=>{coalesce, compare-any, compare-clear, compare-over, composite, dispose, flatten, merge, mosaic, optimize, optimize-image, optimize-plus, optimize-trans, remove-dups, remove-zero}, compose=>{Undefined, Add, Atop, Blend, Bumpmap, Clear, ColorBurn, ColorDodge, Colorize, CopyBlack, CopyBlue, CopyCMYK, Cyan, CopyGreen, Copy, CopyMagenta, CopyAlpha, CopyRed, RGB, CopyYellow, Darken, Dst, Difference, Displace, Dissolve, DstAtop, DstIn, DstOut, DstOver, Dst, Exclusion, HardLight, Hue, In, Lighten, LinearLight, Luminize, Minus, Modulate, Multiply, None, Out, Overlay, Over, Plus, ReplaceCompositeOp, Saturate, Screen, SoftLight, Src, SrcAtop, SrcIn, SrcOut, SrcOver, Src, Subtract, Threshold, Xor }, dither=>{true, false} シーケンス内の前の画像のGIF破棄形式の各画像を比較します。これにより、アニメーションの結果を保持しながら、各フレームを置き換えるために最も小さいトリミングされた画像を選択しようとします。
Level levels=>文字列, 'black-point'=>double, 'gamma'=>double, 'white-point'=>double, channel=>{Red, RGB, All, etc.} 画像のコントラストのレベルを調整します。
LevelColors invert=>>{True, False}, 'black-point'=>文字列, 'white-point'=>文字列, channel=>{Red, RGB, All, etc.} 指定された色で画像のレベルを調整します。
LinearStretch levels=>文字列, 'black-point'=>double, 'white-point'=>double 彩度ストレッチによる線形補正を行います。
LiquidResize geometry=>ジオメトリ, width=>整数, height=>整数, delta-x=>double, rigidity=>double シームカービングで画像のリサイズを行います。
Magnify
ピクセルアートスケーリングで画像のサイズを2倍にします。
Mask mask=>image-handle マスクで定義された画像ピクセルを合成します。
MatteFloodfill geometry=>ジオメトリ, x=>整数, y=>整数 , matte=>整数, bordercolor=>色名, fuzz=>double, invert=>{True, False} ターゲットピクセルの色と一致し、隣接するピクセルのマット値を変更します。境界色を指定すると、その色ではない隣接ピクセルのマット値が変更されます。
MeanShift geometry=>ジオメトリ, width=>double, height=>double, distance=>double 画像内の任意の形状のクラスターを区切ります(例:MeanShift('7x7+10%'))。
MedianFilter geometry=>ジオメトリ, width=>整数, height=>整数, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 各ピクセルを近傍のメディアン強度ピクセルで置き換えます。
Minify
画像のサイズを半分にします。
Mode geometry=>ジオメトリ, width=>整数, height=>整数, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 各ピクセルを近傍の最も多い色にします。
Modulate factor=>ジオメトリ, brightness=>double, saturation=>double, hue=>double, lightness=>double, whiteness=>double, blackness=>double 指定されたパーセントで画像の明るさ、彩度、色相を変更します。
Morphology kernel=>文字列, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, iterations=>整数 画像にモルフォロジー手法を適用します。
MotionBlur geometry=>ジオメトリ, radius=>double, sigma=>double, angle=>double, bias=>double, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 与えられた半径と標準偏差(シグマ)のガウス演算子を、与えられた角度で適用して、画像のノイズを低減し、ディテールレベルを下げて、動きの効果をシミュレートします。
Negate gray=>{True, False}, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 各ピクセルをその補色で置き換えます(白は黒、黄色は青など)。
Normalize channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}
画像の色値をフルレンジに変換します。
OilPaint radius=>整数 油絵をシミュレートします。
Opaque color=>色名, fill=>色名, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, invert=>{True, False} 画像内でこの色を塗りつぶしの色に変更します。
OrderedDither threshold=>{threshold, checks, o2x2, o3x3, o4x4, o8x8, h4x4a, h6x6a, h8x8a, h4x4o, h6x6o, h8x8o, h16x16o, hlines6x4}, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 順序付きディザリング画像を適用します。
Perceptible epsilon=>double, channel=>{Red, RGB, All, etc.} 値が|epsilon|より小さい各ピクセルを-epsilonまたはepsilon(どちらか近い方)に設定します。それ以外の場合、ピクセル値は変更されません。
Polaroid caption=>文字列, angle=>double, pointsize=>double, font=>文字列, stroke=> 色名, strokewidth=>整数, fill=>色名, gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast}, background=>色名 ポラロイド写真をシミュレートします。
Posterize levels=>整数, dither=>{True, False} 画像を限られた数の色レベルに減らします。
Profile name=>文字列, profile=>blob, rendering-intent=>{Undefined, Saturation, Perceptual, Absolute, Relative}, black-point-compensation=>{True, False} ICCまたはIPTC画像プロファイルを追加または削除します。名前は正式な名前です(例:ICCまたはファイル名)。プロファイルを削除するには、プロファイルを''に設定します。
Quantize colors=>整数, colorspace=>{RGB, Gray, Transparent, OHTA, XYZ, YCbCr, YIQ, YPbPr, YUV, CMYK, sRGB, HSL, HSB}, treedepth=> 整数, dither=>{True, False}, dither-method=>{Riemersma, Floyd-Steinberg}, measure_error=>{True, False}, global_colormap=>{True, False}, transparent-color=> 画像内の色の推奨数。
Raise geometry=>ジオメトリ, width=>整数, height=>整数, x=>整数, y=>整数, raise=>{True, False} 画像のエッジを明るくしたり暗くしたりして、3D効果を作成します。
RangeThreshold geometry=>ジオメトリ, 'low-black'=>double, 'low-white'=>double, 'high-white'=>double, 'high-black'=>double ソフトおよびハードイメージの閾値処理を結合します。
ReduceNoise geometry=>ジオメトリ, width=>整数, height=>整数, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} ノイズピーク除去フィルターで画像のノイズを低減します。
Remap image=>画像ハンドル, dither=>{true, false}, dither-method=>{Riemersma, Floyd-Steinberg} 参照画像から最も近い色で画像の色を置き換えます。
Resample density=>ジオメトリ, x=>double, y=>double, filter=>{Point, Box, Triangle, Hermite, Hanning, Hamming, Blackman, Gaussian, Quadratic, Cubic, Catrom, Mitchell, Lanczos, Bessel, Sinc}, support=>double 画像を目的の解像度にリサンプルします。blur> 1を指定するとぼかし、<1を指定するとシャープになります。
Resize geometry=>geometry, width=>integer, height=>integer, filter=>{Point, Box, Triangle, Hermite, Hanning, Hamming, Blackman, Gaussian, Quadratic, Cubic, Catrom, Mitchell, Lanczos, Bessel, Sinc}, support=>double, blur=>double 画像を目的のサイズに拡大縮小します。blur> 1を指定するとぼかし、<1を指定するとシャープになります。
Roll geometry=>ジオメトリ, x=>整数, y=>整数 画像を垂直または水平にロールします。
Rotate degrees=>double, background=>色名 画像を回転します。
RotationalBlur geometry=>ジオメトリ, angle=>double, bias=>double, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 画像を放射状にぼかします。
Sample geometry=>ジオメトリ, width=>整数, height=>整数 ピクセルサンプリングで画像を拡大縮小します。
Scale geometry=>ジオメトリ, width=>整数, height=>整数 画像を目的のサイズに拡大縮小します。
Segment colorspace=>{RGB, Gray, Transparent, OHTA, XYZ, YCbCr, YCC, YIQ, YPbPr, YUV, CMYK}, verbose={True, False}, cluster-threshold=>double, smoothing-threshold=double カラーコンポーネントのヒストグラムを分析し、均一なユニットを特定することによって、画像をセグメント化します。
SelectiveBlur geometry=>ジオメトリ, radius=>double, sigma=>double, threshold=>double, bias=>double, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} コントラストの閾値内のピクセルを選択的にぼかします。
Separate channel=>{Red, RGB, All, etc.} 画像からチャンネルを分離してグレースケール画像にします。
Shade geometry=>ジオメトリ, azimuth=>double, elevation=>double, gray=>{true, false} 遠い光源を使用して画像を陰影付けします。
SetPixel geometry=>ジオメトリ, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, color=>float値の配列, x=>整数, y=>整数, color=>float値の配列 単一のピクセルの値を設定します。正規化されたピクセル値が必要です。
SetPixels geometry=>ジオメトリ, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, color=>float値の配列, width=>整数, height=>整数, x=>整数, y=>整数, color=>float値の配列 1つ以上のピクセルの値を設定します。正規化されたピクセル値が必要です。
Shadow geometry=>ジオメトリ, opacity=>double, sigma=>double, x=>整数, y=>整数 画像の影をシミュレートします。
Sharpen geometry=>geometry, radius=>double, sigma=>double, bias=>double, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 与えられた半径と標準偏差(シグマ)のガウス演算子で画像をシャープにします。
Shave geometry=>ジオメトリ, width=>整数, height=>整数 画像の端からピクセルを削ります。
Shear geometry=>ジオメトリ, x=>double, y=>double fill=>色名 正または負のシア角でX軸またはY軸に沿って画像をシアリングします。
SigmoidalContrast geometry=>文字列, 'contrast'=>double, 'mid-point'=>double channel=>{Red, RGB, All, etc.}, sharpen=>{True, False} シグモイド非線形コントラスト制御。ハイライトやシャドウを飽和させることなく、シグモイド伝達関数を使用して画像のコントラストを上げます。コントラストは、コントラストをどれだけ上げるかを示します(0はなし、3は典型的、20は多い)。中間点は、結果の画像で中間調がどこに落ちるかを示します(0は白、50%は中間グレー、100%は黒)。コントラストを下げるには、シャープをFalseに設定します。
Signature
画像ピクセルストリームのSHA-256メッセージダイジェストを生成します。
Sketch geometry=>geometry, radius=>double, sigma=>double, angle=>double 指定された半径、標準偏差(シグマ)、角度でガウス演算子を使用して画像をスケッチします
Solarize(ソラライズ) geometry=>string, threshold=>double, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 閾値レベルを超えるすべてのピクセルを反転します
SortPixels(ピクセルソート)
各スキャンライン内のピクセルを輝度の昇順にソートします。
SparseColor(スパースカラー) points=>float値の配列, method=>{Barycentric, Bilinear, Shepards, Voronoi}, 'virtual-pixel'=>{Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White} 指定されたポイント周辺の画像の色を補間します
Splice(スプライス) geometry=>geometry, width=>integer, height=>integer, x=>integer, y=>integer, fuzz=>double, background=>色名, gravity=>{NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} 画像をスプライスします
Spread(拡散) radius=>double, interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} 画像ピクセルをランダムな量だけ移動させます
Statistic(統計) geometry=>geometry, width=>integer, height=>integer, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow}, type=>{Contrast, Median, Mode, Mean, Maximum, Minimum, ReduceNoise, RMS} 各ピクセルを、近傍からの対応する統計量に置き換えます。
Stegano(ステガノ) image=>image-handle, offset=>integer 画像内にデジタルウォーターマークを隠します
Stereo(ステレオ) image=>image-handle, x=>integer, y=>integer 2つの画像を合成し、ステレオペアの左画像と右画像の合成である単一の画像を生成します
Strip(ストリップ)
画像からすべてのプロファイルとコメントを削除します。
Swirl(渦巻き) degrees=>double, interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} 画像のピクセルを中心に向かって渦巻き状にします
Texture(テクスチャ) texture=>image-handle 画像背景にタイルとして配置するテクスチャの名前
Thumbnail(サムネイル) geometry=>ジオメトリ, width=>整数, height=>整数 画像サイズを指定された寸法に変更し、関連するプロファイルを削除します。
Threshold(閾値) threshold=>string, channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 画像の閾値処理を行います
Tint(色合い) fill=>色名, blend=>string 塗りつぶし色で画像を色付けします。
Transparent(透明) color=>色名, invert=>{True, False} 画像内のこの色を透明にします
Transpose(転置)
画像を垂直方向に反転させ、90度回転させます
Transverse(横断)
画像を水平方向に反転させ、270度回転させます
Trim(トリム)
画像の背景色であるエッジを削除します
UnsharpMask(アンシャープマスク) geometry=>geometry, radius=>double, sigma=>double, gain=>double, threshold=>double アンシャープマスクアルゴリズムで画像をシャープにします。
Vignette(ビネット) geometry=>geometry, radius=>double, sigma=>double, x=>integer, y=>integer, background=>色名 ビネットスタイルで画像の端をオフセットします
Wave(波) geometry=>geometry, amplitude=>double, wavelength=>double, interpolate=>{undefined, average, bicubic, bilinear, mesh, nearest-neighbor, spline} 正弦波に沿って画像を変化させます
WaveDenoise(波形ノイズ除去) geometry=>geometry, threshold=>double, threshold=>double ウェーブレット変換を使用して画像からノイズを除去します
WhiteBalance(ホワイトバランス) LABカラースペースのグレイワールド仮定に従って、画像にホワイトバランスを適用します。
WhiteThreshold(ホワイト閾値) threshold=>string, , channel=>{All, Default, Alpha, Black, Blue, CMYK, Cyan, Gray, Green, Index, Magenta, Alpha, Red, RGB, Yellow} 閾値強度を超えるすべてのピクセルを強制的に白にします

geometry パラメータは、width および height パラメータのショートカットであることに注意してください(例:geometry=>'106x80'width=>106, height=>80 と同等です)。

Annotate() と Draw() の両方で @filename を指定できます。これにより、ディスク上のファイルからテキストまたはグラフィックプリミティブ命令を読み込みます。例:

image->Draw(fill=>'red', primitive=>'rectangle',
 points=>'20,20 100,100  40,40 200,200  60,60 300,300');

次のものと同等です

$image->Draw(fill=>'red', primitive=>'@draw.txt');

ここで、draw.txt は、次の内容を含むディスク上のファイルです

rectangle 20, 20 100, 100
rectangle 40, 40 200, 200
rectangle 60, 60 300, 300

メソッド、Annotate()、Comment()、Draw()、Label() の text パラメータには、これらの特殊な書式文字を埋め込むことで、画像ファイル名、タイプ、幅、高さ、またはその他の画像属性を含めることができます

%b   file size
%c   comment
%d   directory
%e   filename extension
%f   filename
%g   page geometry
%h   height
%i   input filename
%k   number of unique colors
%l   label
%m   magick
%n   number of scenes
%o   output filename
%p   page number
%q   quantum depth
%r   image class and colorspace
%s   scene number
%t   top of filename
%u   unique temporary filename
%w   width
%x   x resolution
%y   y resolution
%z   image depth
%C   image compression type
%D   image dispose method
%H   page height
%Q   image compression quality
%T   image delay
%W   page width
%X   page x offset
%Y   page y offset
%@   bounding box
%#   signature
%%   a percent sign
\n   newline
\r   carriage return

例:

text=>"%m:%f %wx%h"

bird.miff というタイトルの画像で、幅が 512、高さが 480 の場合、MIFF:bird.miff 512x480 という注釈が生成されます。

オプションで、メソッド名の任意の位置に Image を追加できます。たとえば、TrimImage() はメソッド Trim() のエイリアスです。

上記にリストされた属性のほとんどは、magick に類似した属性を持っています。これらの属性の詳細については、ドキュメントを参照してください。

画像属性の設定

画像属性を設定するには、メソッド Set() を使用します。例:

$image->Set(dither=>'True');
$image->[$x]->Set(delay=>3);

この例では 'True' を使用し、このドキュメントでは '{True, False}' と記述されている場合、大文字と小文字を区別しない文字列 'True' と 'False' を使用するか、整数 1 と 0 を使用できます。

ブール属性に対して Get() を呼び出すと、Image::Magick は文字列ではなく 1 または 0 を返します。

以下は、設定できるすべての画像属性のリストです

画像属性
属性 説明
adjoin {True, False} 画像を単一のマルチイメージファイルに結合します
alpha {On, Off, Opaque, Transparent, Copy, Extract, Set} アルファ/マットチャネルに関連する制御と特別な操作
antialias {True, False} ピクセルエイリアシングを削除します
area-limit integer ピクセル領域リソース制限を設定します。
attenuate double 画像にノイズを追加するときに弱める(または強める)
authenticate string このパスワードで画像を復号化します。
background 色名 画像の背景色
blue-primary x値, y値 色度青原点(例:0.15、0.06)
bordercolor 色名 画像の境界線の色を設定します
clip-mask 画像 クリップマスクを画像に関連付けます。
colormap[i] 色名 色名(例:赤)または16進数(例:#ccc)を位置 i に指定
comment string 画像コメントを設定します
compression {None, BZip, Fax, Group4, JPEG, JPEG2000, LosslessJPEG, LZW, RLE, Zip} 画像の圧縮タイプ
debug {All, Annotate, Blob, Cache, Coder, Configure, Deprecate, Draw, Exception, Locale, None, Resource, Transform, X11} 大量のデバッグ情報を表示
delay integer シーケンス内の次の画像を表示するまでに、この1/100秒が経過する必要があります
density geometry 画像のピクセル単位の垂直および水平解像度
depth integer 画像の深度
direction {Undefined, right-to-left, left-to-right テキストを右から左または左から右にレンダリングします
disk-limit integer ディスクリソース制限を設定
dispose {Undefined, None, Background, Previous} レイヤーの破棄方法
dither {True, False} 画像に誤差拡散を適用します
display string 接続するXサーバーを指定します
extract geometry 画像から領域を抽出
file ファイルハンドル 画像ファイルハンドルを設定します
ファイル名 string 画像ファイル名を設定します
fill 塗りつぶし色は、描画された図形の輪郭の内側の領域を塗りつぶします。
font string 画像にテキストを注釈するときにこのフォントを使用します
fuzz integer この距離内の色は等しいと見なされます
gamma double 画像のガンマレベル
Gravity {Forget, NorthWest, North, NorthEast, West, Center, East, SouthWest, South, SouthEast} 画像の重力タイプ
green-primary x値, y値 色度緑原点(例:0.3、0.6)
index[x, y] string 位置(x, y)のカラーマップインデックス
interlace {None, Line, Plane, Partition, JPEG, GIF, PNG} インターレーススキームのタイプ
iterations integer GIFアニメーションにNetscapeループ拡張を追加
label string 画像ラベルを設定します
loop integer GIFアニメーションにNetscapeループ拡張を追加
magick string 画像形式を設定します
map-limit integer マップリソース制限を設定
mask 画像 マスクを画像に関連付けます。
matte {True, False} 画像マットチャネルを有効にします
mattecolor 色名 画像マットカラーを設定します
memory-limit integer メモリリソース制限を設定
monochrome {True, False} 画像を白黒に変換します
option string オプションを画像形式に関連付けます(例:option=>'ps:imagemask')
orientation {TopLeft, TopRight, BottomRight, BottomLeft, LeftTop, RightTop, RightBottom, LeftBottom} 画像の向き
page { Letter, Tabloid, Ledger, Legal, Statement, Executive, A3, A4, A5, B4, B5, Folio, Quarto, 10x14} または geometry 画像キャンバスの推奨サイズと場所
pixel[x, y] string 位置 (x, y) の16進数(例:#ccc)
pointsize integer PostscriptまたはTrueTypeフォントのポイントサイズ
precision integer 印刷する有効数字の最大数を設定します
quality integer JPEG/MIFF/PNG圧縮レベル
red-primary x値, y値 色度赤原点(例:0.64、0.33)
sampling-factor geometry 水平および垂直サンプリングファクター
scene integer 画像シーン番号
server string 接続するXサーバーを指定します
size string 生画像の幅と高さ
stroke ストローク色は、図形の輪郭に沿って描画します。
texture string 画像背景にタイルとして配置するテクスチャの名前
tile-offset geometry 画像のタイルオフセット
time-limit integer 時間リソース制限を秒単位で設定
title string 画像のタイトルを設定します
type {Bilevel, Grayscale, GrayscaleMatte, Palette, PaletteMatte, TrueColor, TrueColorMatte, ColorSeparation, ColorSeparationMatte} 画像のタイプ
units { Undefined, PixelsPerInch, PixelsPerCentimeter} 画像解像度の単位
verbose {True, False} 画像に関する詳細情報を出力します
virtual-pixel {Background Black Constant Dither Edge Gray Mirror Random Tile Transparent White} 仮想ピクセルメソッド
white-point x値, y値 色度白色点(例:0.3127、0.329)

geometry パラメータは、width および height パラメータのショートカットであることに注意してください(例:geometry=>'106x80'width=>106, height=>80 と同等です)。

SetAttribute() は、メソッド Set() のエイリアスです。

上記にリストされた属性のほとんどは、magick に類似した属性を持っています。これらの属性の詳細については、ドキュメントを参照してください。

画像属性の取得

画像属性を取得するには、メソッド Get() を使用します。例:

($a, $b, $c) = $image->Get('colorspace', 'magick', 'adjoin');
$width = $image->[3]->Get('columns');

画像属性の設定 にリストされているすべての属性に加えて、これらの追加属性を取得できます

画像属性
属性 説明
area integer 現在消費されている領域リソース
base-columns integer 基本画像の幅(変換前)
base-filename string 基本画像ファイル名(変換前)
base-rows integer 基本画像の高さ(変換前)
class {Direct, Pseudo} 画像のクラス
colors integer 画像のユニークな色の数
columns integer 画像の幅
copyright string PerlMagickの著作権を取得する
ディレクトリ string 画像モンタージュ内のタイル名
経過時間 double 画像の作成からの経過時間(秒単位)
エラー double Compare()またはQuantize()メソッドで計算されたピクセルあたりの平均エラー
バウンディングボックス string 画像のバウンディングボックス
ディスク integer 現在消費されているディスクリソース
ファイルサイズ integer ディスク上の画像のバイト数
フォーマット string 記述的な画像フォーマットを取得する
geometry string 画像ジオメトリ
高さ integer 画像の行数または高さ
icc string ICCプロファイル
icc string ICMプロファイル
id integer ImageMagickレジストリID
IPTC string IPTCプロファイル
平均エラー double Compare()またはQuantize()メソッドで計算された正規化されたピクセルあたりの平均エラー
マップ integer 現在消費されているメモリマップリソース
matte {True, False} 画像がマットチャンネルを持っているかどうか
最大エラー double Compare()またはQuantize()メソッドで計算された正規化されたピクセルあたりの最大エラー
メモリ integer 現在消費されているメモリリソース
mime string 画像フォーマットのMIME
モンタージュ geometry 画像モンタージュ内のタイルサイズとオフセット
page.x integer 画像仮想キャンバスのXオフセット
page.y integer 画像仮想キャンバスのYオフセット
integer 画像の行数または高さ
署名 string 画像ピクセルストリームに関連付けられたSHA-256メッセージダイジェスト
汚染 {True, False} 画像が変更された場合はTrue
総インク密度 double CMYK画像の総インク密度を返します
透明色 色名 画像の透明色を設定する
ユーザー時間 double 画像の作成からのユーザー時間(秒単位)
バージョン string PerlMagickのバージョンを取得する
integer 画像の列数または幅
XMP string XMPプロファイル
x解像度 integer 画像のx解像度
y解像度 integer 画像のy解像度

GetAttribute()はGet()メソッドのエイリアスです。

上記にリストされた属性のほとんどは、magick に類似した属性を持っています。これらの属性の詳細については、ドキュメントを参照してください。

画像とその再構成を比較する

Compare()メソッドを使用して、画像とその再構成の差異を数学的および視覚的に注釈付けます。このメソッドは次のパラメーターをサポートします。

比較パラメーター
パラメーター 説明
チャンネル double 画像チャンネルを選択します。デフォルトはアルファを除くすべてのチャンネルです。
fuzz double この距離内の色は等しいと見なされます
画像 画像参照 画像の再構成
メトリック AE、MAE、MEPP、MSE、PAE、PSNR、RMSE このメトリックを使用して画像間の差異を測定します

この例では、ImageMagickロゴとシャープニングされた再構成を比較します。

use Image::Magick;

$logo=Image::Magick->New();
$logo->Read('logo:');
$sharp=Image::Magick->New();
$sharp->Read('logo:');
$sharp->Sharpen('0x1');
$difference=$logo->Compare(image=>$sharp, metric=>'rmse');
print $difference->Get('error'), "\n";
$difference->Display();

約0.024の報告された二乗平均平方根誤差に加えて、画像間の差異を視覚的に識別できるように、差異画像が表示されます。

画像モンタージュを作成する

Montage()メソッドを使用して、複数の個別の画像を組み合わせて合成画像を作成します。画像は合成画像上にタイル状に並べられ、オプションで個々のタイルのすぐ下に画像の名前が表示されます。たとえば、

$image->Montage(geometry=>'160x160', tile=>'2x2', texture=>'granite:');

Montage()で設定できるパラメーターのリストを次に示します。

モンタージュパラメーター
パラメーター 説明
background 色名 背景色の名前
境界 integer 画像の境界線の幅
ファイル名 string モンタージュ画像の名前
fill 色名 注釈の塗りつぶし色
font string X11フォント名
フレーム geometry 装飾的な枠で画像を囲みます
geometry geometry 複合画像の各タイルの優先タイルと境界サイズ(例:120x120 + 4 + 3&gt;)
グラビティ 北西、北、北東、西、中央、東、南西、南、南東 タイル内の画像の重力方向
label string 画像にラベルを割り当てます。
モード フレーム、アンフレーム、連結 サムネイルのフレームオプション
pointsize integer PostscriptまたはTrueTypeフォントのポイントサイズ
{True, False} 深さをシミュレートするために、タイルの下に影を追加します
stroke 色名 注釈のストローク色
texture string 画像背景にタイルとして配置するテクスチャの名前
タイル geometry 行およびページあたりのタイル数(例:6x4)
title string 画像モンタージュにタイトルを割り当てる
透明 string 画像内のこの色を透明にします

geometry パラメータは、width および height パラメータのショートカットであることに注意してください(例:geometry=>'106x80'width=>106, height=>80 と同等です)。

MontageImage()はMontage()メソッドのエイリアスです。

上記にリストされている属性のほとんどは、montageに類似物があります。これらの属性の詳細については、ドキュメントを参照してください。

BLOBの操作

BLOBには、ディスク上ではなくメモリ内の特定の画像フォーマットを直接表すデータが含まれています。PerlMagickは、これらの画像フォーマットのいずれかのBLOBをサポートし、BLOBを特定の画像フォーマットとの間で変換するメソッドを提供します。

BLOBメソッド
メソッド パラメーター 戻り値 説明
ImageToBlob 任意の画像属性 それぞれの画像フォーマットの画像データの配列 画像または画像シーケンスをBLOBの配列に変換する
BlobToImage 1つ以上のBLOB 画像に変換されたBLOBの数 1つ以上のBLOBを画像に変換する

ImageToBlob()は、それぞれのフォーマットで画像データを返します。次に、それを印刷したり、ODBCデータベースに保存したり、ファイルに書き込んだり、表示プログラムにパイプしたりできます。

@blobs = $image->ImageToBlob();
open(DISPLAY,"| display -") || die;
binmode DISPLAY;
print DISPLAY $blobs[0];
close DISPLAY;

BlobToImage()メソッドは、指定されたBLOBから変換された画像または画像シーケンスを返します。

@blob=$db->GetImage();
$image=Image::Magick->new(magick=>'jpg');
$image->BlobToImage(@blob);

画像ピクセルへの直接アクセス

これらのメソッドを使用して、画像ピクセルへの直接アクセスを取得します。

画像ピクセルへの直接アクセス
メソッド パラメーター 説明
GetAuthenticPixels geometry=>geometry、width=>integer、height=>integer、x=>integer、y=>integer 本物のピクセルをCポインタとして返します
GetVirtualPixels geometry=>geometry、width=>integer、height=>integer、x=>integer、y=>integer 仮想ピクセルをconst Cポインタとして返します
GetAuthenticIndexQueue カラーマップインデックスまたは黒のピクセルをCポインタとして返します
GetVirtualIndexQueue カラーマップインデックスまたは黒のピクセルをconst Cポインタとして返します
SyncAuthenticPixels 本物のピクセルをピクセルキャッシュに同期します

その他のメソッド

Append()メソッドは、一連の画像を追加します。たとえば、

$p = $image->Append(stack=>{true,false});

オブジェクト$imageに関連付けられているすべての画像を追加します。デフォルトでは、画像は左から右に積み重ねられます。それらを上から下に積み重ねるには、stackをTrueに設定します。

Clone()メソッドは、一連の画像をコピーします。たとえば、

$q = $p->Clone();

オブジェクト$pから$qにすべての画像をコピーします。このメソッドは、単一または複数画像のシーケンスに使用できます。

Coalesce()は、ページオフセットと破棄方法を考慮しながら、一連の画像を合成します。GIF、MIFF、およびMNGのアニメーションシーケンスは通常、画像の背景で始まり、後続の各画像はサイズとオフセットが異なります。新しい画像シーケンスは、最初の画像の仮想キャンバスと同じサイズで、シーケンス内の次の画像と合成されたすべての画像で返されます。たとえば、

$q = $p->Coalesce();

ComplexImages()メソッドは、画像シーケンスに対して複雑な数学演算を実行します。たとえば、

$p = $image->ComplexImages('conjugate');

EvaluateImages()メソッドは、一連の画像に算術、論理、または関係式を適用します。たとえば、

$p = $image->EvaluateImages('mean');

オブジェクト$imageに関連付けられているすべての画像の平均を計算します。

Features()メソッドは、指定された距離の4つの方向(水平、垂直、左、右の対角線)のそれぞれについて、画像の各チャンネルの特性を返します。特性には、角度の2次モーメント、コントラスト、相関、二乗の合計:分散、逆差モーメント、合計平均、合計分散、合計エントロピー、エントロピー、差分散、差エントロピー、相関の測定値1、相関の測定値2、および最大相関係数が含まれます。RGB、CMYK、RGBA、またはCMYKAの順(画像の種類によって異なります)。

@features = $image->Features(1);

Flatten()メソッドは、一連の画像をフラット化して返します。たとえば、

$p = $images->Flatten(background=>'none');
$p->Write('flatten.png');

画像シーケンスは、最初の画像の後に各画像を重ねて作成された単一の画像に置き換えられます。

Fx()メソッドは、一連の画像に数式を適用し、結果を返します。たとえば、

$p = $image->Fx(expression=>'(g+b)/2.0',channel=>'red');
$p->Write('fx.miff');

赤チャンネルを緑と青チャンネルの平均に置き換えます。

このメソッドの詳細については、FX、特殊効果画像オペレーターを参照してください。

Histogram()は、画像内の一意の色とそれぞれの数を返します。返される値は、赤、緑、青、不透明度、およびカウント値の配列です。

Morph()メソッドは、一連の画像をモーフィングします。画像ピクセルとサイズの両方が線形に補間され、ある画像から次の画像へのメタモーフォシスの外観を与えます。

$p = $image->Morph(frames=>integer);

ここで、framesは生成する中間画像の数です。デフォルトは1です。

Mosaic()は、画像シーケンスからモザイクを作成します。

Mogrify()メソッドは、画像操作メソッド(画像の操作)の単一のエントリーポイントです。パラメーターは、メソッドの名前と、メソッドが必要とする可能性のあるパラメーターです。たとえば、次の呼び出しは同等です。

$image->Crop('340x256+0+0');
$image->Mogrify('crop', '340x256+0+0');

MogrifyRegion()メソッドは、画像の領域に変換を適用します。これはMogrify()に似ていますが、領域ジオメトリから始まります。たとえば、画像の場所(40、50)で100x100の領域を明るくしたいとします。

$image->MogrifyRegion('100x100+40+50', 'modulate', brightness=>50);

PerceptualHash()は、視覚的に同一の画像を同じまたは類似のハッシュにマップします。これは、デジタル透かしだけでなく、画像検索、認証、インデックス作成、またはコピー検出で役立ちます。チャンネルごと、およびsRGBおよびHCLp色空間ごとに、7つのハッシュ値が返されます。たとえば、sRGB画像の場合、42個の知覚ハッシュが予想されます。

@phash = $image->PerceptualHash();

Ping()は、画像をメモリに読み込まずに画像に関する情報を返す便利なメソッドです。画像の幅、高さ、ファイルサイズ(バイト単位)、およびファイル形式を返します。複数のファイル名を指定できますが、指定できるファイルハンドルは1つだけです。

($width, $height, $size, $format) = $image->Ping('logo.png');
($width, $height, $size, $format) = $image->Ping(file=>\*IMAGE);
($width, $height, $size, $format) = $image->Ping(blob=>$blob);

これは、画像が存在するかどうか、およびその特性を照会するための、より効率的でメモリ消費量の少ない方法です。

Poly()は、画像シーケンスと対応する項(係数と次数のペア)から多項式を構築します。

$p = $image->Poly([0.5,1.0,0.25,2.0,1.0,1.0]);

PreviewImage()は、指定された画像の9つのサムネイルをタイル状に並べ、さまざまな強度で画像処理操作を適用します。これは、特定の画像処理操作に適切なパラメーターを特定するのに役立つ場合があります。次の操作から選択してください:Rotate、Shear、Roll、Hue、Saturation、Brightness、Gamma、Spiff、Dull、Grayscale、Quantize、Despeckle、ReduceNoise、AddNoise、Sharpen、Blur、Threshold、EdgeDetect、Spread、Solarize、Shade、Raise、Segment、Swirl、Implode、Wave、OilPaint、CharcoalDrawing、JPEG。次に例を示します。

$preview = $image->Preview('Gamma');
$preview->Display();

テキストの位置を完全に制御するには、フォントメトリック情報が必要です。使用してください

($x_ppem, $y_ppem, $ascender, $descender, $width, $height, $max_advance) =
  $image->QueryFontMetrics(parameters);

ここで、parametersは、Annotateメソッドの任意のパラメーターです。戻り値は次のとおりです。

  1. 文字幅
  2. 文字の高さ
  3. アセンダー
  4. ディセンダー
  5. テキストの幅
  6. テキストの高さ
  7. 水平方向の最大アドバンス
  8. 境界:x1
  9. 境界:y1
  10. 境界:x2
  11. 境界:y2
  12. 原点:x
  13. 原点:y

複数行のテキストの最大テキスト幅と高さを取得するには、QueryMultilineFontMetrics()を使用します。

パラメーターを指定せずにQueryColor()を呼び出して、既知の色名のリストを返すか、1つ以上の色名を指定して、赤、緑、青、および不透明度の値を取得します。

@colors = $image->QueryColor();
($red, $green, $blue) = $image->QueryColor('cyan');
($red, $green, $blue, $alpha) = $image->QueryColor('#716baeff');

QueryColorname()は色の値を受け取り、それぞれの名前または16進数値を返します。

$name = $image->QueryColorname('rgba(80,60,0,0)');

パラメーターを指定せずにQueryFont()を呼び出して、既知のフォントのリストを返すか、1つ以上のフォント名を指定して、フォント名、説明、ファミリー、スタイル、ストレッチ、太さ、エンコーディング、ファウンダリ、フォーマット、メトリック、およびグリフの値を取得します。

@fonts = $image->QueryFont();
$weight = ($image->QueryFont('Helvetica'))[5];

パラメーターを指定せずにQueryFormat()を呼び出して、既知の画像フォーマットのリストを返すか、1つ以上のフォーマット名を指定して、隣接、BLOBサポート、raw、デコーダー、エンコーダー、説明、およびモジュールの属性を取得します。

@formats = $image->QueryFormat();
($adjoin, $blob_support, $raw, $decoder, $encoder, $description, $module) =
  $image->QueryFormat('gif');

画像フォーマット名を指定してMagickToMime()を呼び出し、tifからimage/tiffなどのMIMEタイプを取得します。

$mime = $image->MagickToMime('tif');

RemoteCommand()を使用して、すでに実行中のdisplayまたはanimateアプリケーションにコマンドを送信します。唯一のパラメーターは、表示またはアニメーション化する画像ファイルの名前です。

$image->RemoteCommand('image.jpg');

Smush()メソッドは、一連の画像を一緒に押しつぶします。たとえば、

$p = $image->Smush(stack=>{true,false},offset=>integer);

オブジェクト$imageに関連付けられているすべての画像を一緒に押しつぶします。デフォルトでは、画像は左から右に押しつぶされます。それらを上から下に押しつぶすには、stackをTrueに設定します。

Statistics()は、画像の各チャンネルの画像統計を返します。返される値は、深さ、最小値、最大値、平均値、標準偏差、尖度、歪度、およびエントロピー値の配列(RGB、CMYK、RGBA、またはCMYKAの順(画像の種類によって異なります))です。

@statistics = $image->Statistics();

最後に、Transform() メソッドは、1 つ以上の画像を切り抜きまたはリサイズするための完全修飾されたジオメトリ指定を受け入れます。例:

$p = $image->Transform(crop=>'100x100+0+0');

オプションで、上記メソッド名の末尾に Image を追加できます。たとえば、PingImage() はメソッド Ping() のエイリアスです。

例外処理

PerlMagick のすべてのメソッドは、成功時に未定義の文字列コンテキストを返します。問題が発生した場合、エラーは数値ステータスコードが埋め込まれた文字列として返されます。400 未満のステータスコードは警告です。これは、操作が完了しなかったものの、ある程度回復可能であることを意味します。400 以上の数値コードはエラーであり、操作が完全に失敗したことを示します。以下は、異なるメソッドで例外がどのように返されるかを示しています。

数値 (例: Read(), Write()) を返すメソッド

$x = $image->Read(...);
warn "$x" if "$x";      # print the error message
$x =~ /(\d+)/;
print $1;               # print the error number
print 0+$x;             # print the number of images read

画像 (例: Resize(), Crop()) を操作するメソッド

$x = $image->Crop(...);
warn "$x" if "$x";      # print the error message
$x =~ /(\d+)/;
print $1;               # print the error number

画像を返すメソッド (EvaluateSequence(), Montage(), Clone()) は、次のようにエラーをチェックする必要があります。

$x = $image->Montage(...);
warn "$x" if !ref($x);  # print the error message
$x =~ /(\d+)/;
print $1;               # print the error number

以下にエラーメッセージの例を示します。

Error 400: Memory allocation failed

エラーと警告コードの完全なリストを確認してください。

以下に、数値ステータスコードを使用する方法を示します。

$x = $image->Read('rose.png');
$x =~ /(\d+)/;
die "unable to continue" if ($1 == ResourceLimitError);

定数

PerlMagick には、以下の定数が含まれています。

BlobError
BlobWarning
CacheError
CacheWarning
CoderError
CoderWarning
ConfigureError
ConfigureWarning
CorruptImageError
CorruptImageWarning
DelegateError
DelegateWarning
DrawError
DrawWarning
ErrorException
FatalErrorException
FileOpenError
FileOpenWarning
ImageError
ImageWarning
MissingDelegateError
MissingDelegateWarning
ModuleError
ModuleWarning
Opaque
OptionError
OptionWarning
QuantumDepth
QuantumRange
RegistryError
RegistryWarning
ResourceLimitError
ResourceLimitWarning
StreamError
StreamWarning
Success
Transparent
TypeError
TypeWarning
WarningException
XServerError
XServerWarning

これらには次のようにアクセスできます。

Image::Magick->QuantumDepth