Example
function shadePixel($value, $r, $g, $b)
{
$result = [];
$result[] = intval($r * $value / 64);
$result[] = intval($g * $value / 64);
$result[] = intval($b * $value / 64);
return $result;
}
function importImagePixels()
{
$width = 320;
$height = 200;
//$imagick = new \Imagick();
$imagick = new \Imagick();//;"magick:logo");
for ($loop = 0; $loop<=255; $loop += 8) {
$frame = new \Imagick();
$frame->newPseudoImage($width, $height, "xc:black");
//$frame->setImageFormat('gif');
for ($y=0; $y<$height; $y++) {
$pixels = [];
for ($x = 0; $x < $width; $x++) {
$pos = sqrt(($x * $x) + ($y * $y));
$pos = (256 + $pos - $loop) % 256;
if ($pos < 64) {
$rgbColor = shadePixel($pos, 255, 0, 0);
}
else if ($pos < 128) {
$rgbColor = shadePixel($pos - 64, 0, 255, 0);
}
else if ($pos < 192) {
$rgbColor = shadePixel($pos - 128, 0, 0, 255);
}
else {
$rgbColor = shadePixel($pos - 192, 255, 0, 255);
}
list($r, $g, $b) = $rgbColor;
$pixels[] = $r;
$pixels[] = $g;
$pixels[] = $b;
}
$frame->importImagePixels(
0, $y,
320, 1,
"RGB",
\Imagick::PIXEL_CHAR,
$pixels
);
}
$imagick->addImage($frame);
$imagick->setImageFormat('gif');
$imagick->setImageDelay(3);
}
$imagick->setImageFormat('gif');
$imagick->mergeImageLayers(\Imagick::LAYERMETHOD_OPTIMIZEIMAGE);
header("Content-Type: image/gif");
$imagick->setImageIterations(0);
echo $imagick->getImagesBlob();
}