Imagick::importImagePixels
(PECL imagick 2 >= 2.3.0, PECL imagick 3)
Imagick::importImagePixels — 画像のピクセルをインポートする
説明
int
$x
,int
$y
,int
$width
,int
$height
,string
$map
,int
$storage
,array
$pixels
): bool
配列から画像にピクセルをインポートします。map
は、通常は
'RGB' です。このメソッドのパラメータには次の制約があります。配列内のピクセルの量が、
width
x height
x mapの長さ
と一致しなければなりません。
このメソッドは、ImageMagick バージョン 6.4.5 以降で Imagick をコンパイルした場合に使用可能です。
パラメータ
x
-
画像の x 位置。
y
-
画像の y 位置。
width
-
画像の幅。
height
-
画像の高さ。
map
-
ピクセルの並び順を表す文字列。たとえば
RGB
のようになります。以下の文字を任意の順で組み合わせることができます。 R = red, G = green, B = blue, A = alpha (0 is transparent), O = opacity (0 is opaque), C = cyan, Y = yellow, M = magenta, K = black, I = intensity (for grayscale), P = pad. storage
-
ピクセルの格納方式。 pixel 定数 の一覧を参照ください。
pixels
-
ピクセルの配列。
戻り値
成功した場合に true
を返します。
エラー / 例外
エラー時に ImagickException をスローします。
例
例1 Imagick::importImagePixels() の例
<?php
/* ピクセルの配列を生成します。各色について 2000 ピクセルとなります */
$count = 2000 * 3;
$pixels =
array_merge(array_pad(array(), $count, 0),
array_pad(array(), $count, 255),
array_pad(array(), $count, 0),
array_pad(array(), $count, 255),
array_pad(array(), $count, 0));
/* 幅と高さ。ピクセル数を 3 で割った量が面積となります。
3 というのは 'RGB' からきたもので、1 ピクセルあたり 3 つの値があるということです */
$width = $height = pow((count($pixels) / 3), 0.5);
/* 空の画像を作成します */
$im = new Imagick();
$im->newImage($width, $height, 'gray');
/* ピクセルが画像に取り込みます。
width * height * strlen("RGB") が count($pixels) と一致しなければなりません */
$im->importImagePixels(0, 0, $width, $height, "RGB", Imagick::PIXEL_CHAR, $pixels);
/* jpeg 画像として出力します */
$im->setImageFormat('jpg');
header("Content-Type: image/jpg");
echo $im;
?>
上の例の出力は、 たとえば以下のようになります。