From edfb5615df8a14591722f8a9070e1ba879247604 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=AD=A6=E7=94=B0=20=E6=86=B2=E5=A4=AA=E9=83=8E?= Date: Mon, 16 Mar 2026 21:44:29 +0900 Subject: [PATCH] =?UTF-8?q?Imagick=20=E6=9C=AA=E8=A8=B3=E3=83=A1=E3=82=BD?= =?UTF-8?q?=E3=83=83=E3=83=89=E6=96=B0=E8=A6=8F=E7=BF=BB=E8=A8=B3=2019=20?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 翻訳内容 ### reference/imagick/imagick(14件) - reference/imagick/imagick/autolevelimage.xml — 画像チャネルの自動レベル調整 1. php/doc-en@1ef9c7a - reference/imagick/imagick/blueshiftimage.xml — 月明かりシミュレーションによる色調変換 1. php/doc-en@1ef9c7a - reference/imagick/imagick/brightnesscontrastimage.xml — 明るさ・コントラストの変更 1. php/doc-en@1ef9c7a - reference/imagick/imagick/colormatriximage.xml — 色変換行列の適用 1. php/doc-en@cf2b279 - reference/imagick/imagick/filter.xml — カスタム畳み込みカーネルの適用 1. php/doc-en@1ef9c7a - reference/imagick/imagick/forwardfouriertransformimage.xml — 離散フーリエ変換 1. php/doc-en@1ef9c7a - reference/imagick/imagick/morphology.xml — モルフォロジー処理(26 examples) 1. php/doc-en@1ef9c7a - reference/imagick/imagick/rotationalblurimage.xml — 回転ブラーの適用 1. php/doc-en@1ef9c7a - reference/imagick/imagick/selectiveblurimage.xml — コントラスト閾値内の選択的ブラー 1. php/doc-en@1ef9c7a - reference/imagick/imagick/setprogressmonitor.xml — 処理中コールバックの設定 1. php/doc-en@1534707 - reference/imagick/imagick/smushimages.xml — 画像群の結合 1. php/doc-en@1ef9c7a - reference/imagick/imagick/statisticimage.xml — 統計関数による画像変更 1. php/doc-en@85278ca - reference/imagick/imagick/subimagematch.xml — 部分画像検索 1. php/doc-en@1ef9c7a - reference/imagick/imagick/transformimagecolorspace.xml — 色空間の変換 1. php/doc-en@65c4446 ### reference/imagick/imagickkernel(4件) - reference/imagick/imagickkernel/addkernel.xml — カーネルリストへの追加 1. php/doc-en@1534707 - reference/imagick/imagickkernel/addunitykernel.xml — Unity カーネルの追加 1. php/doc-en@1534707 - reference/imagick/imagickkernel/getmatrix.xml — カーネル行列の取得 1. php/doc-en@1ef9c7a - reference/imagick/imagickkernel/separate.xml — 連結カーネルの分離 1. php/doc-en@1ef9c7a ### 独立ファイル - reference/imagick/imagickpixel/getcolorvaluequantum.xml — 色の quantum 値の取得 1. php/doc-en@1ef9c7a --- reference/imagick/imagick/autolevelimage.xml | 87 +++ reference/imagick/imagick/blueshiftimage.xml | 92 +++ .../imagick/brightnesscontrastimage.xml | 108 ++++ .../imagick/imagick/colormatriximage.xml | 119 ++++ reference/imagick/imagick/filter.xml | 115 ++++ .../imagick/forwardfouriertransformimage.xml | 136 +++++ reference/imagick/imagick/morphology.xml | 574 ++++++++++++++++++ .../imagick/imagick/rotationalblurimage.xml | 101 +++ .../imagick/imagick/selectiveblurimage.xml | 118 ++++ .../imagick/imagick/setprogressmonitor.xml | 144 +++++ reference/imagick/imagick/smushimages.xml | 105 ++++ reference/imagick/imagick/statisticimage.xml | 126 ++++ reference/imagick/imagick/subimagematch.xml | 122 ++++ .../imagick/transformimagecolorspace.xml | 100 +++ reference/imagick/imagickkernel/addkernel.xml | 108 ++++ .../imagick/imagickkernel/addunitykernel.xml | 154 +++++ reference/imagick/imagickkernel/getmatrix.xml | 110 ++++ reference/imagick/imagickkernel/separate.xml | 128 ++++ .../imagickpixel/getcolorvaluequantum.xml | 88 +++ 19 files changed, 2635 insertions(+) create mode 100644 reference/imagick/imagick/autolevelimage.xml create mode 100644 reference/imagick/imagick/blueshiftimage.xml create mode 100644 reference/imagick/imagick/brightnesscontrastimage.xml create mode 100644 reference/imagick/imagick/colormatriximage.xml create mode 100644 reference/imagick/imagick/filter.xml create mode 100644 reference/imagick/imagick/forwardfouriertransformimage.xml create mode 100644 reference/imagick/imagick/morphology.xml create mode 100644 reference/imagick/imagick/rotationalblurimage.xml create mode 100644 reference/imagick/imagick/selectiveblurimage.xml create mode 100644 reference/imagick/imagick/setprogressmonitor.xml create mode 100644 reference/imagick/imagick/smushimages.xml create mode 100644 reference/imagick/imagick/statisticimage.xml create mode 100644 reference/imagick/imagick/subimagematch.xml create mode 100644 reference/imagick/imagick/transformimagecolorspace.xml create mode 100644 reference/imagick/imagickkernel/addkernel.xml create mode 100644 reference/imagick/imagickkernel/addunitykernel.xml create mode 100644 reference/imagick/imagickkernel/getmatrix.xml create mode 100644 reference/imagick/imagickkernel/separate.xml create mode 100644 reference/imagick/imagickpixel/getcolorvaluequantum.xml diff --git a/reference/imagick/imagick/autolevelimage.xml b/reference/imagick/imagick/autolevelimage.xml new file mode 100644 index 0000000000..5ae971733e --- /dev/null +++ b/reference/imagick/imagick/autolevelimage.xml @@ -0,0 +1,87 @@ + + + + + + + Imagick::autoLevelImage + 特定の画像チャネルのレベルを調整する + + + + &reftitle.description; + + public boolImagick::autoLevelImage + intchannelImagick::CHANNEL_DEFAULT + + + 最小値と最大値をフル quantum range にスケーリングすることで、特定の画像チャネルのレベルを調整します。 + + + + + + &reftitle.parameters; + + + channel + + + 自動レベル調整を適用するチャネル。 + + + + + + + + &reftitle.returnvalues; + + &imagick.return.success; + + + + + &reftitle.examples; + + + <function>Imagick::autoLevelImage</function> + + autoLevelImage(); + header("Content-Type: image/jpg"); + echo $imagick->getImageBlob(); +} + +?> +]]> + + + + + + + + diff --git a/reference/imagick/imagick/blueshiftimage.xml b/reference/imagick/imagick/blueshiftimage.xml new file mode 100644 index 0000000000..73a08cb3a0 --- /dev/null +++ b/reference/imagick/imagick/blueshiftimage.xml @@ -0,0 +1,92 @@ + + + + + + Imagick::blueShiftImage + 画像の色を落ち着かせる + + + + &reftitle.description; + + public boolImagick::blueShiftImage + floatfactor1.5 + + + + 月明かりに照らされた夜景をシミュレートするように、画像の色を落ち着かせます。 + + + + + + + + &reftitle.parameters; + + + factor + + + + + + + + + + + &reftitle.returnvalues; + + &imagick.return.success; + + + + + + + + &reftitle.examples; + + + <function>Imagick::blueShiftImage</function> + + blueShiftImage($blueShift); + header("Content-Type: image/jpg"); + echo $imagick->getImageBlob(); +} + +?> +]]> + + + + + + + + \ No newline at end of file diff --git a/reference/imagick/imagick/brightnesscontrastimage.xml b/reference/imagick/imagick/brightnesscontrastimage.xml new file mode 100644 index 0000000000..2ed89b2b10 --- /dev/null +++ b/reference/imagick/imagick/brightnesscontrastimage.xml @@ -0,0 +1,108 @@ + + + + + + + Imagick::brightnessContrastImage + 画像の明るさやコントラストを変更する + + + + &reftitle.description; + + public boolImagick::brightnessContrastImage + floatbrightness + floatcontrast + intchannelImagick::CHANNEL_DEFAULT + + + 画像の明るさやコントラストを変更します。明るさとコントラストのパラメータを傾きと切片に変換し、多項式関数を呼び出して画像に適用します。 + + + + + + &reftitle.parameters; + + + brightness + + + + + + + + contrast + + + + + + + + channel + + + + + + + + + + + &reftitle.returnvalues; + + &imagick.return.success; + + + + + + + + &reftitle.examples; + + + <function>Imagick::brightnessContrastImage</function> + + brightnessContrastImage($brightness, $contrast, $channel); + header("Content-Type: image/jpg"); + echo $imagick->getImageBlob(); +} + +?> +]]> + + + + + + + + diff --git a/reference/imagick/imagick/colormatriximage.xml b/reference/imagick/imagick/colormatriximage.xml new file mode 100644 index 0000000000..e7945d9296 --- /dev/null +++ b/reference/imagick/imagick/colormatriximage.xml @@ -0,0 +1,119 @@ + + + + + + Imagick::colorMatrixImage + 画像に色変換を適用する + + + + &reftitle.description; + + public boolImagick::colorMatrixImage + arraycolor_matrix + + + 画像に色変換を適用します。 + このメソッドは、彩度の変更、色相の回転、輝度からアルファへの変換、 + その他さまざまな効果を実現できます。 + 可変サイズの変換行列を使うこともできますが、 + 通常は RGBA 画像には 5x5 の行列を、CMYKA(またはオフセット付きの RGBA) + には 6x6 の行列を使います。 + この行列は Adobe Flash で使われるものと似ていますが、 + オフセットが 5 列目ではなく 6 列目にあり(CMYKA 画像をサポートするため)、 + オフセットは正規化されています(Flash のオフセットを 255 で除算します)。 + + + + + + + &reftitle.parameters; + + + color_matrix + + + + + + + + + + + &reftitle.returnvalues; + + &imagick.return.success; + + + + + + + + &reftitle.examples; + + + <function>Imagick::colorMatrixImage</function> + + setImageOpacity(1); + + //色変換行列は以下のようになります: + // $colorMatrix = [ + // 1.5, 0.0, 0.0, 0.0, 0.0, -0.157, + // 0.0, 1.0, 0.5, 0.0, 0.0, -0.157, + // 0.0, 0.0, 1.5, 0.0, 0.0, -0.157, + // 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, + // 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, + // 0.0, 0.0, 0.0, 0.0, 0.0, 1.0 + // ]; + + $background = new \Imagick(); + $background->newPseudoImage($imagick->getImageWidth(), $imagick->getImageHeight(), "pattern:checkerboard"); + + $background->setImageFormat('png'); + + $imagick->setImageFormat('png'); + $imagick->colorMatrixImage($colorMatrix); + + $background->compositeImage($imagick, \Imagick::COMPOSITE_ATOP, 0, 0); + + header("Content-Type: image/png"); + echo $background->getImageBlob(); +} + +?> +]]> + + + + + + + + \ No newline at end of file diff --git a/reference/imagick/imagick/filter.xml b/reference/imagick/imagick/filter.xml new file mode 100644 index 0000000000..8d5d7528e3 --- /dev/null +++ b/reference/imagick/imagick/filter.xml @@ -0,0 +1,115 @@ + + + + + + + Imagick::filter + カスタム畳み込みカーネルを画像に適用する + + + + &imagick.deprecated.function-3-4-4; + + + + &reftitle.description; + + public boolImagick::filter + ImagickKernelImagickKernel + intchannelImagick::CHANNEL_UNDEFINED + + + カスタム畳み込みカーネルを画像に適用します。 + + + + + + &reftitle.parameters; + + + ImagickKernel + + + 単一のカーネル、または連結された一連のカーネルを表す + ImagickKernel のインスタンス。 + + + + + channel + + + &imagick.parameter.channel; + + + + + + + + &reftitle.returnvalues; + + &imagick.return.success; + + + + + + + + &reftitle.examples; + + + <function>Imagick::filter</function> + + scale($strength, \Imagick::NORMALIZE_KERNEL_VALUE); + $kernel->addUnityKernel(1 - $strength); + + $imagick->filter($kernel); + header("Content-Type: image/jpg"); + echo $imagick->getImageBlob(); +} + +?> +]]> + + + + + + + + diff --git a/reference/imagick/imagick/forwardfouriertransformimage.xml b/reference/imagick/imagick/forwardfouriertransformimage.xml new file mode 100644 index 0000000000..d8709cfa80 --- /dev/null +++ b/reference/imagick/imagick/forwardfouriertransformimage.xml @@ -0,0 +1,136 @@ + + + + + + + Imagick::forwardFourierTransformImage + 離散フーリエ変換 (DFT) を実行する + + + + &reftitle.description; + + public boolImagick::forwardFourierTransformimage + boolmagnitude + + + 画像の離散フーリエ変換 (DFT) を、振幅/位相のペアまたは実数/虚数の画像ペアとして実行します。 + + + + + + &reftitle.parameters; + + + magnitude + + + true の場合は振幅/位相のペアとして返し、それ以外の場合は実数/虚数の画像ペアとして返します。 + + + + + + + + &reftitle.returnvalues; + + &imagick.return.success; + + + + + + + + &reftitle.examples; + + + <function>Imagick::forwardFourierTransformImage</function> + + setStrokeOpacity(0); + $draw->setStrokeColor('rgb(255, 255, 255)'); + $draw->setFillColor('rgb(255, 255, 255)'); + + //y 軸上に、中心が x, y にあり + //原点に接する円を描画する + $draw->circle(250, 250, 220, 250); + + $imagick = new \Imagick(); + $imagick->newImage(512, 512, "black"); + $imagick->drawImage($draw); + $imagick->gaussianBlurImage(20, 20); + $imagick->autoLevelImage(); + + return $imagick; +} + + +function forwardFourierTransformImage($imagePath) { + $imagick = new \Imagick(realpath($imagePath)); + $imagick->resizeimage(512, 512, \Imagick::FILTER_LANCZOS, 1); + + $mask = createMask(); + $imagick->forwardFourierTransformImage(true); + + @$imagick->setimageindex(0); + $magnitude = $imagick->getimage(); + + @$imagick->setimageindex(1); + $imagickPhase = $imagick->getimage(); + + if (true) { + $imagickPhase->compositeImage($mask, \Imagick::COMPOSITE_MULTIPLY, 0, 0); + } + + if (false) { + $output = clone $imagickPhase; + $output->setimageformat('png'); + header("Content-Type: image/png"); + echo $output->getImageBlob(); + } + + $magnitude->inverseFourierTransformImage($imagickPhase, true); + + $magnitude->setimageformat('png'); + header("Content-Type: image/png"); + echo $magnitude->getImageBlob(); +} + +?> +]]> + + + + + + + + diff --git a/reference/imagick/imagick/morphology.xml b/reference/imagick/imagick/morphology.xml new file mode 100644 index 0000000000..8ae5fc99c9 --- /dev/null +++ b/reference/imagick/imagick/morphology.xml @@ -0,0 +1,574 @@ + + + + + + + Imagick::morphology + 指定されたモルフォロジーメソッドに従い、ユーザー指定のカーネルを画像に適用する + + + + &reftitle.description; + + public boolImagick::morphology + intmorphologyMethod + intiterations + ImagickKernelImagickKernel + intchannelImagick::CHANNEL_DEFAULT + + + 指定されたモルフォロジーメソッドに従い、ユーザー指定のカーネルを画像に適用します。 + + + + + + + &reftitle.parameters; + + + morphologyMethod + + + 使用するモルフォロジーメソッド。\Imagick::MORPHOLOGY_* 定数のいずれか。 + + + + + iterations + + + モルフォロジー関数を適用する回数。-1 を指定すると、変化がなくなるまでループします。この値がどのように適用されるかは、モルフォロジーメソッドに依存する場合があります。通常、この値は 1 です。 + + + + + ImagickKernel + + + + + + + + channel + + + + + + + + + + + &reftitle.returnvalues; + + &imagick.return.success; + + + + + + + + &reftitle.examples; + + + Convolve <function>Imagick::morphology</function> + + getCharacter(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_GAUSSIAN, "5,1"); + $imagick->morphology(\Imagick::MORPHOLOGY_CONVOLVE, 2, $kernel); + header("Content-Type: image/png"); + echo $imagick->getImageBlob(); + +?> +]]> + + + + + Correlate <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromMatrix(self::$correlateMatrix, [2, 2]); + $imagick->morphology(\Imagick::MORPHOLOGY_CORRELATE, 1, $kernel); + header("Content-Type: image/png"); + echo $imagick->getImageBlob(); + +?> +]]> + + + + + Erode <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3"); + $canvas->morphology(\Imagick::MORPHOLOGY_ERODE, 2, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Erode Intensity <function>Imagick::morphology</function> + + getCharacter(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "1"); + $canvas->morphology(\Imagick::MORPHOLOGY_ERODE_INTENSITY, 2, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Dilate <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3"); + $canvas->morphology(\Imagick::MORPHOLOGY_DILATE, 4, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Dilate intensity <function>Imagick::morphology</function> + + getCharacter(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "1"); + $canvas->morphology(\Imagick::MORPHOLOGY_DILATE_INTENSITY, 4, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Chebyshev カーネルによる Distance <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_CHEBYSHEV, "3"); + $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel); + $canvas->autoLevelImage(); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Manhattan カーネルによる Distance <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_MANHATTAN, "5"); + $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel); + $canvas->autoLevelImage(); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + 八角形カーネルによる Distance <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGONAL, "5"); + $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel); + $canvas->autoLevelImage(); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Euclidean カーネルによる Distance <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_EUCLIDEAN, "4"); + $canvas->morphology(\Imagick::MORPHOLOGY_DISTANCE, 3, $kernel); + $canvas->autoLevelImage(); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Edge <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3"); + $canvas->morphology(\Imagick::MORPHOLOGY_EDGE, 1, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Open <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6"); + $canvas->morphology(\Imagick::MORPHOLOGY_OPEN, 1, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Open intensity <function>Imagick::morphology</function> + + getCharacter(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6"); + $canvas->morphology(\Imagick::MORPHOLOGY_OPEN_INTENSITY, 1, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Close <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6"); + $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Close Intensity <function>Imagick::morphology</function> + + getCharacter(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "6"); + $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE_INTENSITY, 1, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Smooth <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3"); + $canvas->morphology(\Imagick::MORPHOLOGY_SMOOTH, 1, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Edge in <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3"); + $canvas->morphology(\Imagick::MORPHOLOGY_EDGE_IN, 1, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Edge out <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_OCTAGON, "3"); + $canvas->morphology(\Imagick::MORPHOLOGY_EDGE_OUT, 1, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + 'TopHat' メソッド、より正確には 'White Top Hat' は、Opening によって除去されたピクセル、つまり角を丸めるために除去されたピクセルや形状間の接続部分を返します。 <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "5"); + $canvas->morphology(\Imagick::MORPHOLOGY_TOP_HAT, 1, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + 'BottomHat' メソッドは、'Black TopHat' とも呼ばれ、Closing によって画像に追加されるピクセルです。つまり、'holes'、'gaps'、'bridges' を埋めるために使用されたピクセルです。 <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "5"); + $canvas->morphology(\Imagick::MORPHOLOGY_BOTTOM_HAT, 1, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Hit and Miss <function>Imagick::morphology</function> + + getCharacterOutline(); + //右端から 3 ピクセル以内にあるすべてのピクセルを検出する + $matrix = [[1, false, false, 0]]; + $kernel = \ImagickKernel::fromMatrix( + $matrix, + [0, 0] + ); + $canvas->morphology(\Imagick::MORPHOLOGY_HIT_AND_MISS, 1, $kernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Thinning <function>Imagick::morphology</function> + + getCharacterOutline(); + $leftEdgeKernel = \ImagickKernel::fromMatrix([[0, 1]], [1, 0]); + $rightEdgeKernel = \ImagickKernel::fromMatrix([[1, 0]], [0, 0]); + $leftEdgeKernel->addKernel($rightEdgeKernel); + + $canvas->morphology(\Imagick::MORPHOLOGY_THINNING, 3, $leftEdgeKernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + Thicken <function>Imagick::morphology</function> + + getCharacterOutline(); + $leftEdgeKernel = \ImagickKernel::fromMatrix([[0, 1]], [1, 0]); + $rightEdgeKernel = \ImagickKernel::fromMatrix([[1, 0]], [0, 0]); + $leftEdgeKernel->addKernel($rightEdgeKernel); + + $canvas->morphology(\Imagick::MORPHOLOGY_THICKEN, 3, $leftEdgeKernel); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + 凸包を生成する Thicken <function>Imagick::morphology</function> + + getCharacterOutline(); + $diamondKernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DIAMOND, "1"); + $convexKernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_CONVEX_HULL, ""); + + // thicken モルフォロジーは小さな隙間を処理できないため、 + // close モルフォロジーで閉じる。 + $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $diamondKernel); + $canvas->morphology(\Imagick::MORPHOLOGY_THICKEN, -1, $convexKernel); + $canvas->morphology(\Imagick::MORPHOLOGY_CLOSE, 1, $diamondKernel); + + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + 反復モルフォロジー <function>Imagick::morphology</function> + + getCharacterOutline(); + $kernel = \ImagickKernel::fromBuiltIn(\Imagick::KERNEL_DISK, "2"); + $canvas->morphology(\Imagick::MORPHOLOGY_ITERATIVE, 3, $kernel); + $canvas->autoLevelImage(); + header("Content-Type: image/png"); + echo $canvas->getImageBlob(); + +?> +]]> + + + + + 画像のシルエットを取得するヘルパー関数 <function>Imagick::morphology</function> + +newPseudoImage( + $imagick->getImageWidth(), + $imagick->getImageHeight(), + "canvas:white" + ); + $canvas = new \Imagick(); + $canvas->newPseudoImage( + $imagick->getImageWidth(), + $imagick->getImageHeight(), + "canvas:black" + ); + + $character->compositeimage( + $imagick, + \Imagick::COMPOSITE_COPYOPACITY, + 0, 0 + ); + $canvas->compositeimage( + $character, + \Imagick::COMPOSITE_ATOP, + 0, 0 + ); + $canvas->setFormat('png'); + + return $canvas; +} +?> +]]> + + + + + + + + diff --git a/reference/imagick/imagick/rotationalblurimage.xml b/reference/imagick/imagick/rotationalblurimage.xml new file mode 100644 index 0000000000..e669d337f4 --- /dev/null +++ b/reference/imagick/imagick/rotationalblurimage.xml @@ -0,0 +1,101 @@ + + + + + + Imagick::rotationalBlurImage + 画像に回転ブラーを施す + + + + &reftitle.description; + + public boolImagick::rotationalBlurImage + floatangle + intchannelImagick::CHANNEL_DEFAULT + + + 画像に回転ブラーを施します。 + + + + + + + &reftitle.parameters; + + + angle + + + ブラーを適用する角度。 + + + + + channel + + + &imagick.parameter.channel; + + + + + + + + &reftitle.returnvalues; + + &imagick.return.success; + + + + + + + + &reftitle.examples; + + + <function>Imagick::rotationalBlurImage</function> + + rotationalBlurImage(3); + $imagick->rotationalBlurImage(5); + $imagick->rotationalBlurImage(7); + header("Content-Type: image/jpg"); + echo $imagick->getImageBlob(); +} + +?> +]]> + + + + + + + + \ No newline at end of file diff --git a/reference/imagick/imagick/selectiveblurimage.xml b/reference/imagick/imagick/selectiveblurimage.xml new file mode 100644 index 0000000000..4b08c71cdb --- /dev/null +++ b/reference/imagick/imagick/selectiveblurimage.xml @@ -0,0 +1,118 @@ + + + + + + + Imagick::selectiveBlurImage + コントラストの閾値内で選択的に画像をぼかす + + + + &reftitle.description; + + public boolImagick::selectiveBlurImage + floatradius + floatsigma + floatthreshold + intchannelImagick::CHANNEL_DEFAULT + + + コントラストの閾値内で選択的に画像をぼかします。一定の閾値を超えたコントラストのすべてをシャープにするアンシャープマスクに似ています。 + + + + + + + &reftitle.parameters; + + + radius + + + + + + + + sigma + + + + + + + + threshold + + + + + + + + channel + + + &imagick.parameter.channel; + + + + + + + + &reftitle.returnvalues; + + &imagick.return.success; + + + + + + + + &reftitle.examples; + + + <function>Imagick::selectiveBlurImage</function> + + selectiveBlurImage($radius, $sigma, $threshold, $channel); + header("Content-Type: image/jpg"); + echo $imagick->getImageBlob(); +} + +?> +]]> + + + + + + + + diff --git a/reference/imagick/imagick/setprogressmonitor.xml b/reference/imagick/imagick/setprogressmonitor.xml new file mode 100644 index 0000000000..bd162ebe87 --- /dev/null +++ b/reference/imagick/imagick/setprogressmonitor.xml @@ -0,0 +1,144 @@ + + + + + + + Imagick::setProgressMonitor + 処理中に呼び出されるコールバックを設定する + + + + &reftitle.description; + + public boolImagick::setProgressMonitor + callablecallback + + + Imagick 画像の処理中に呼び出されるコールバックを設定します。 + + + + + + + &reftitle.parameters; + + + callback + + + 呼び出す進捗関数。画像処理を続行する場合は true を、キャンセルする場合は false を返す必要があります。offset パラメータは進捗状況を示し、span パラメータは必要な作業の総量を示します。 + + + + bool + + callback + + + mixedoffset + + + mixed + span + + + + + + コールバック関数に渡される値は一定ではありません。特に span パラメータは画像処理中に増加することがあります。このため、画像操作の完了率を計算することは単純ではありません。 + + + + + + + + + + &reftitle.returnvalues; + + &imagick.return.success; + + + + + + + + &reftitle.examples; + + + <function>Imagick::setProgressMonitor</function> + + control->getImagePath())); + $startTime = time(); + + $callback = function ($offset, $span) use ($startTime, &$abortReason) { + if (((100 * $offset) / $span) > 20) { + $abortReason = "Processing reached 20%"; + return false; + } + + $nowTime = time(); + + if ($nowTime - $startTime > 5) { + $abortReason = "Image processing took more than 5 seconds"; + return false; + } + if (($offset % 5) == 0) { + echo "Progress: $offset / $span
"; + } + return true; + }; + + $imagick->setProgressMonitor($callback); + + $imagick->waveImage(2, 15); + + echo "Data len is: ".strlen($imagick->getImageBlob()); + } + catch(\ImagickException $e) { + if ($abortReason != null) { + echo "Image processing was aborted: ".$abortReason."
"; + } + else { + echo "ImagickException caught: ".$e->getMessage()." Exception type is ".get_class($e); + } + } + +?> +]]> +
+
+
+
+ +
+ + diff --git a/reference/imagick/imagick/smushimages.xml b/reference/imagick/imagick/smushimages.xml new file mode 100644 index 0000000000..5bb2781c7e --- /dev/null +++ b/reference/imagick/imagick/smushimages.xml @@ -0,0 +1,105 @@ + + + + + + + Imagick::smushImages + 現在の画像ポインタから画像リストの最後までのすべての画像を取得し、結合する + + + + &reftitle.description; + + public ImagickImagick::smushImages + boolstack + intoffset + + + 現在の画像ポインタから画像リストの最後までのすべての画像を取得し、 + stack パラメータが true の場合は上から下に、それ以外の場合は左から右に結合します。 + + + + + + &reftitle.parameters; + + + stack + + + + + + + + offset + + + + + + + + + + + &reftitle.returnvalues; + + 結合された新しい画像を返します。 + + + + + + + + &reftitle.examples; + + + <function>Imagick::smushImages</function> + + addimage($imagick2); + $smushed = $imagick->smushImages(false, 50); + $smushed->setImageFormat('jpg'); + header("Content-Type: image/jpg"); + echo $smushed->getImageBlob(); +} + +?> +]]> + + + + + + + + diff --git a/reference/imagick/imagick/statisticimage.xml b/reference/imagick/imagick/statisticimage.xml new file mode 100644 index 0000000000..385e6dbfd0 --- /dev/null +++ b/reference/imagick/imagick/statisticimage.xml @@ -0,0 +1,126 @@ + + + + + + + Imagick::statisticImage + 統計関数を使用して画像を変更する + + + + &reftitle.description; + + public boolImagick::statisticImage + inttype + intwidth + intheight + intchannelImagick::CHANNEL_DEFAULT + + + 各ピクセルを、指定した幅と高さの近傍ピクセルの統計値で置き換えます。 + + + + + + &reftitle.parameters; + + + type + + + + + + + + width + + + + + + + + height + + + + + + + + channel + + + + + + + + + + + &reftitle.returnvalues; + + &imagick.return.success; + + + + + + + + &reftitle.examples; + + + <function>Imagick::statisticImage</function> + + statisticImage( + $statisticType, + $width, + $height, + $channel + ); + + header("Content-Type: image/jpg"); + echo $imagick->getImageBlob(); +} + +statisticImage($imagePath, \Imagick::STATISTIC_MEDIAN, 5, 5, \Imagick::CHANNEL_DEFAULT); + +?> +]]> + + + + + + + + diff --git a/reference/imagick/imagick/subimagematch.xml b/reference/imagick/imagick/subimagematch.xml new file mode 100644 index 0000000000..eed5c611d4 --- /dev/null +++ b/reference/imagick/imagick/subimagematch.xml @@ -0,0 +1,122 @@ + + + + + + Imagick::subImageMatch + 現在の画像から部分画像を検索し、類似度画像を返す + + + + &reftitle.description; + + public ImagickImagick::subImageMatch + ImagickImagick + arrayoffset + floatsimilarity + + + 現在の画像から部分画像を検索し、類似度画像を返します。 + 完全に一致する箇所は白、まったく一致しない箇所は黒、 + その中間はグレーの階調で表現されます。 + オプションのパラメータ bestMatch と similarity を渡すこともできます。 + この関数の呼び出し後、similarity には部分画像と元画像中の一致箇所との + 類似度の「スコア」が設定されます。bestMatch には一致した領域を示す + x, y, width, height の要素を持つ連想配列が格納されます。 + + + + + + + &reftitle.parameters; + + + Imagick + + + + + + + + offset + + + + + + + + similarity + + + 各ピクセルの類似度を表す新しい画像。 + + + + + + + + &reftitle.returnvalues; + + + + + + + + + + &reftitle.examples; + + + <function>Imagick::subImageMatch</function> + + cropimage(40, 40, 250, 110); + $imagick2->vignetteimage(0, 1, 3, 3); + + $similarity = null; + $bestMatch = null; + $comparison = $imagick->subImageMatch($imagick2, $bestMatch, $similarity); + + $comparison->setImageFormat('png'); + header("Content-Type: image/png"); + echo $imagick->getImageBlob(); +} + +?> +]]> + + + + + + + + diff --git a/reference/imagick/imagick/transformimagecolorspace.xml b/reference/imagick/imagick/transformimagecolorspace.xml new file mode 100644 index 0000000000..89e24c46f2 --- /dev/null +++ b/reference/imagick/imagick/transformimagecolorspace.xml @@ -0,0 +1,100 @@ + + + + + + + Imagick::transformImageColorspace + + 画像を新しい色空間に変換する + + + + &reftitle.description; + + + public boolImagick::transformImageColorspace + intcolorspace + + + 画像を新しい色空間に変換します。 + + + + + &reftitle.parameters; + + + colorspace + + + 画像の変換先の色空間。COLORSPACE 定数のいずれか (例: Imagick::COLORSPACE_CMYK)。 + + + + + + + + &reftitle.returnvalues; + + &imagick.return.success; + + + + + &reftitle.examples; + + <methodname>Imagick::transformImageColorspace</methodname> の例 + + 画像を新しい色空間に変換し、個々のチャネル値を確認できるよう単一のチャネルを抽出します。 + + + +transformimagecolorspace($colorSpace); + //channel はチャネル定数のいずれか(例: \Imagick::CHANNEL_BLUE) + $imagick->separateImageChannel($channel); + header("Content-Type: image/jpg"); + echo $imagick->getImageBlob(); +} +?> +]]> + + + + + + + + &reftitle.seealso; + + Imagick::setColorSpace + + + + + + \ No newline at end of file diff --git a/reference/imagick/imagickkernel/addkernel.xml b/reference/imagick/imagickkernel/addkernel.xml new file mode 100644 index 0000000000..8e2505b509 --- /dev/null +++ b/reference/imagick/imagickkernel/addkernel.xml @@ -0,0 +1,108 @@ + + + + + + + ImagickKernel::addKernel + カーネルリストに別のカーネルを追加する + + + + &reftitle.description; + + public voidImagickKernel::addKernel + ImagickKernelImagickKernel + + + このカーネルに別のカーネルを追加し、単一のモルフォロジー関数またはフィルタ関数で + 両方を適用できるようにします。結合された新しいカーネルを返します。 + + + + + + &reftitle.parameters; + + + ImagickKernel + + + + + + + + + + + &reftitle.returnvalues; + + + + + + + + + + &reftitle.examples; + + + <function>ImagickKernel::addKernel</function> + + addKernel($kernel2); + + $imagick = new \Imagick(realpath($imagePath)); + $imagick->filter($kernel1); + header("Content-Type: image/jpg"); + echo $imagick->getImageBlob(); + +} + +?> +]]> + + + + + + + + \ No newline at end of file diff --git a/reference/imagick/imagickkernel/addunitykernel.xml b/reference/imagick/imagickkernel/addunitykernel.xml new file mode 100644 index 0000000000..0b2e33506f --- /dev/null +++ b/reference/imagick/imagickkernel/addunitykernel.xml @@ -0,0 +1,154 @@ + + + + + + + ImagickKernel::addUnityKernel + カーネルリストに Unity カーネルを追加する + + + + &reftitle.description; + + public voidImagickKernel::addUnityKernel + floatscale + + + 事前にスケーリングおよび正規化されたカーネルに、指定した量の 'Unity' 畳み込みカーネルを + 追加します。これにより、元の画像がその量だけ畳み込みカーネルの結果に加算されます。 + 結果として、定義されたカーネルをブレンドされたソフトブラー、 + アンシャープカーネル、またはシャープニングカーネルに変換できます。 + + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + + + + + + + + + &reftitle.examples; + + + <function>ImagickKernel::addUnityKernel</function> + + "; + + foreach ($matrix as $row) { + $output .= ""; + foreach ($row as $cell) { + $output .= ""; + if ($cell === false) { + $output .= "false"; + } + else { + $output .= round($cell, 3); + } + $output .= ""; + } + $output .= ""; + } + + $output .= ""; + + return $output; + } + + $matrix = [ + [-1, 0, -1], + [ 0, 4, 0], + [-1, 0, -1], + ]; + + $kernel = \ImagickKernel::fromMatrix($matrix); + $kernel->scale(1, \Imagick::NORMALIZE_KERNEL_VALUE); + $output = "Before adding unity kernel:
"; + $output .= renderKernelTable($kernel->getMatrix()); + $kernel->addUnityKernel(0.5); + $output .= "After adding unity kernel:
"; + $output .= renderKernelTable($kernel->getMatrix()); + + $kernel->scale(1, \Imagick::NORMALIZE_KERNEL_VALUE); + $output .= "After renormalizing kernel:
"; + $output .= renderKernelTable($kernel->getMatrix()); + + echo $output; + +?> +]]> +
+
+ + + <function>ImagickKernel::addUnityKernel</function> + + scale(4, \Imagick::NORMALIZE_KERNEL_VALUE); + $kernel->addUnityKernel(0.5); + + + $imagick = new \Imagick(realpath($imagePath)); + $imagick->filter($kernel); + header("Content-Type: image/jpg"); + echo $imagick->getImageBlob(); + +} + +?> +]]> + + +
+
+ +
+ + diff --git a/reference/imagick/imagickkernel/getmatrix.xml b/reference/imagick/imagickkernel/getmatrix.xml new file mode 100644 index 0000000000..de1ae5fe48 --- /dev/null +++ b/reference/imagick/imagickkernel/getmatrix.xml @@ -0,0 +1,110 @@ + + + + + + + ImagickKernel::getMatrix + カーネルで使用される2次元の値の行列を取得する + + + + &reftitle.description; + + public arrayImagickKernel::getMatrix + + + + カーネルで使用される2次元の値の行列を取得します。各要素は、 + 使用される要素の場合は float、スキップすべき要素の場合は 'false' です。 + + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + カーネルを表す値の行列(2次元配列)。 + + + + + + + + &reftitle.examples; + + + <function>ImagickKernel::getMatrix</function> + + "; + + foreach ($matrix as $row) { + $output .= ""; + foreach ($row as $cell) { + $output .= ""; + if ($cell === false) { + $output .= "false"; + } + else { + $output .= round($cell, 3); + } + $output .= ""; + } + $output .= ""; + } + + $output .= ""; + + return $output; +} + + $output = "The built-in kernel name 'ring' with parameters of '2,3.5':
"; + $kernel = \ImagickKernel::fromBuiltIn( + \Imagick::KERNEL_RING, + "2,3.5" + ); + $matrix = $kernel->getMatrix(); + $output .= renderKernelTable($matrix); + + echo $output; + +?> +]]> +
+
+
+
+ +
+ + diff --git a/reference/imagick/imagickkernel/separate.xml b/reference/imagick/imagickkernel/separate.xml new file mode 100644 index 0000000000..25e2b97261 --- /dev/null +++ b/reference/imagick/imagickkernel/separate.xml @@ -0,0 +1,128 @@ + + + + + + + ImagickKernel::separate + 連結されたカーネルのセットを分離し、ImagickKernel の配列を返す + + + + &reftitle.description; + + public arrayImagickKernel::separate + + + + 連結されたカーネルのセットを分離し、ImagickKernel の配列を返します。 + + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + + + + + + + + + &reftitle.examples; + + + <function>ImagickKernel::separate</function> + + "; + foreach ($matrix as $row) { + $output .= ""; + foreach ($row as $cell) { + $output .= ""; + if ($cell === false) { + $output .= "false"; + } + else { + $output .= round($cell, 3); + } + $output .= ""; + } + $output .= ""; + } + + $output .= ""; + + return $output; + } + + + $matrix = [ + [-1, 0, -1], + [ 0, 4, 0], + [-1, 0, -1], + ]; + + $kernel = \ImagickKernel::fromMatrix($matrix); + $kernel->scale(4, \Imagick::NORMALIZE_KERNEL_VALUE); + $diamondKernel = \ImagickKernel::fromBuiltIn( + \Imagick::KERNEL_DIAMOND, + "2" + ); + + $kernel->addKernel($diamondKernel); + + $kernelList = $kernel->separate(); + + $output = ''; + $count = 0; + foreach ($kernelList as $kernel) { + $output .= "
Kernel $count
"; + $output .= renderKernelTable($kernel->getMatrix()); + $count++; + } + + return $output; + +?> +]]> +
+
+
+
+ +
+ + diff --git a/reference/imagick/imagickpixel/getcolorvaluequantum.xml b/reference/imagick/imagickpixel/getcolorvaluequantum.xml new file mode 100644 index 0000000000..8fe77b969b --- /dev/null +++ b/reference/imagick/imagickpixel/getcolorvaluequantum.xml @@ -0,0 +1,88 @@ + + + + + + + ImagickPixel::getColorValueQuantum + ImagickPixel の色の quantum 値を取得する + + + + &reftitle.description; + + public intfloatImagickPixel::getColorValueQuantum + intcolor + + + ImagickPixel の色の quantum 値を取得します。ImageMagick が HDRI 付きでコンパイルされている場合は float、そうでない場合は int を返します。 + + + + + + &reftitle.parameters; + &no.function.parameters; + + + + &reftitle.returnvalues; + + 色要素の quantum 値を返します。ImageMagick が HDRI 付きでコンパイルされている場合は float、そうでない場合は int を返します。 + + + + + + + + &reftitle.examples; + + + <function>ImagickPixel::getColorValueQuantum</function> + + getColorValueQuantum(\Imagick::COLOR_RED); + $colorGreen = $color->getColorValueQuantum(\Imagick::COLOR_GREEN); + $colorBlue = $color->getColorValueQuantum(\Imagick::COLOR_BLUE); + $colorAlpha = $color->getColorValueQuantum(\Imagick::COLOR_ALPHA); + + printf( + "Red: %s Green: %s Blue %s Alpha: %s", + $colorRed, + $colorGreen, + $colorBlue, + $colorAlpha + ); + +?> +]]> + + + + + + + +