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(); }