iMagick writeImages错误与否

时间:2018-06-29 14:35:05

标签: php imagemagick imagick

我处理gif图片。有时我需要调整大小,删除一些幻灯片或绘制文本。在示例中,我绘制了50张具有不同颜色和大小的gif图像幻灯片。当我绘制1 x 1像素或500 x 500的图像时,会得到相同的生成时间。怎么可能 ?当我绘制图片超过2000 x 2000时,生成时间会增加。但是小尺寸有什么问题呢?

function DrawSlides($width, $height) {
    $savePath = 'imagick.gif';
    $colors = [
        '#FFFAFA',
        '#6A5ACD',
        '#EE3B3B',
        '#4EEE94',
        '#7EC0EE',
        '#EEE685',
        '#FFA500',
        '#FAFAFA',
        '#FFA54F',
        '#242424',
        '#CD3333',
    ];

    $time = microtime(true);
    $backgroundColor = $colors[rand(0,10)];
    $imagick = new \Imagick();
    $imagick->newImage($width, $height, $backgroundColor);
    $imagick->setFormat('gif');
    $imagick->setImageFormat("gif");

    for($i = 0; $i < 50; $i++) {
        $backgroundColor = $colors[rand(0,10)];
        $tempImagick = new \Imagick();
        $tempImagick->newImage($width, $height, $backgroundColor);
        $tempImagick->setImageFormat("gif");

        $imagick->addImage($tempImagick);

    }
    $imagick = $imagick->deconstructImages();
    echo PHP_EOL . 'all draw generation = ' . round(microtime(true) - $time, 3) . ' seconds';
//        0.2 - 0.3 seconds

    $time = microtime(true);
    $str = $imagick->getImagesBlob();
//        OR
//      $imagick->writeImages($savePath, true);
        echo PHP_EOL . 'save image = ' . round(microtime(true) - $time, 3) . ' seconds';
//        1.7 - 2.0 seconds

}

0 个答案:

没有答案