PHP Imagick()需要很长时间才能完成

时间:2016-03-06 23:56:19

标签: php imagick

我运行此脚本以从pdf创建jpg图像。

$im = new Imagick();
$im->setResolution(300, 300);
$im->readImage($temp_path . $file);
if ($im->getImageColorspace() == \Imagick::COLORSPACE_CMYK) {
    $profiles = $im->getImageProfiles('*', false);
    // we're only interested if ICC profile(s) exist 
    $has_icc_profile = (array_search('icc', $profiles) !== false);
    // if it doesnt have a CMYK ICC profile, we add one 
    if ($has_icc_profile === false) {
        $icc_cmyk = file_get_contents(dirname(dirname(__FILE__)) . '/USWebUncoated.icc');
        $im->profileImage('icc', $icc_cmyk);
        unset($icc_cmyk);
    }
    // then we add an RGB profile 
    $icc_rgb = file_get_contents(dirname(dirname(__FILE__)) . '/sRGB_v4_ICC_preference.icc');
    $im->profileImage('icc', $icc_rgb);
    unset($icc_rgb);
 }
 $im->setImageBackgroundColor('white');
 $im = $im->flattenImages();
 $im->setImageFormat('jpeg');
 $im->thumbnailImage(900, 900, true);

工作正常,但问题是需要很长时间才能完成。还有一段时间,如果文件有很多细节,我会从php获得超时限制。

我以前在没有profileImage()文件的情况下使用它并且工作正常,但是CMYK上的颜色不对。

我怎样才能做得更好,更有效率。我使用php5.5.9在linux上运行它

感谢。

2 个答案:

答案 0 :(得分:0)

我建议使用cloudinary.com,检查一下,它会为您节省大量时间。

答案 1 :(得分:0)

看看它是否更快并且仍然包含正确的颜色:

<php
$im = new Imagick();
$im->readImage($temp_path . $file); //pdf
if ($im->getImageColorspace() == \Imagick::COLORSPACE_CMYK) {
  $im->transformImageColorspace(\Imagick::COLORSPACE_SRGB);
}
$im->writeImage('out.jpg'); // jpg
?>