(PECL imagick 2 >= 2.3.0, PECL imagick 3)
Imagick::importImagePixels β ΠΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ
$x,$y,$width,$height,$map,$storage,$pixels
ΠΠΌΠΏΠΎΡΡΠΈΡΡΠ΅Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° Π² ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. map ΠΎΠ±ΡΡΠ½ΠΎ "RGB".
ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ: ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ
width x height ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ.
ΠΠ΅ΡΠΎΠ΄ Π΄ΠΎΡΡΡΠΏΠ΅Π½, Π΅ΡΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Ρ Imagick ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π»ΠΈ Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ ImageMagick 6.4.5 ΠΈΠ»ΠΈ ΡΡΠ°ΡΡΠ΅.
xΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠΈ X.
yΠΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠΎ ΠΎΡΠΈ Y.
widthΠ¨ΠΈΡΠΈΠ½Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
heightΠΡΡΠΎΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
map
ΠΠ°ΡΡΠ° ΡΠΏΠΎΡΡΠ΄ΠΎΡΠ΅Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π² Π²ΠΈΠ΄Π΅ ΡΡΡΠΎΠΊΠΈ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, RGB.
ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΠΎΠΉ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ: R = ΠΊΡΠ°ΡΠ½ΡΠΉ, G = Π·Π΅Π»ΡΠ½ΡΠΉ, B = ΡΠΈΠ½ΠΈΠΉ, A = Π°Π»ΡΡΠ° (0 - ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ),
O = Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ (0 - Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ), C = Π³ΠΎΠ»ΡΠ±ΠΎΠΉ, Y = ΠΆΡΠ»ΡΡΠΉ, M = ΠΏΡΡΠΏΡΡΠ½ΡΠΉ,
K = ΡΡΡΠ½ΡΠΉ, I = ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΡ (Π΄Π»Ρ ΠΎΡΡΠ΅Π½ΠΊΠΎΠ² ΡΠ΅ΡΠΎΠ³ΠΎ), P = Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ.
storageΠΠ΅ΡΠΎΠ΄ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ. Π‘ΠΌΠΎΡΡΠΈΡΠ΅ ΡΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ.
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));
/* Π¨ΠΈΡΠΈΠ½Π° ΠΈ Π²ΡΡΠΎΡΠ°. ΠΠ»ΠΎΡΠ°Π΄Ρ - ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ, ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ Π½Π° ΡΡΠΈ.
Π’ΡΠΈ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΎΡ "RGB", ΡΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΠΈΠΊΡΠ΅Π»Ρ. */
$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);
/* ΠΡΠ²ΠΎΠ΄ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ */
$im->setImageFormat('jpg');
header("Content-Type: image/jpg");
echo $im;
?>ΠΡΠ²ΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡ ΠΎΠΆ Π½Π°: