优化Imagick annotateImage

时间:2015-02-14 20:55:57

标签: php imagick

我使用Imagick生成文本图像(想想网站横幅 - 它们看起来像那样)。我在此功能中耗尽了服务器上的资源,特别是annotate行。

public function output_image($type = 'png') {
        $this->set_draw($this->font_size);
        $this->image->newImage($this->width*1.3, 
            $this->line_height*2.5, 
            'transparent'); // make an image that's too big
        $this->image->annotateImage($this->draw, 
            $this->font_size*0.5,  //x offset for cursive fonts
            $this->font_size, // vertical offset for tall ascenders
            0, //angle
            $this->text); // add the text
        $this->image->trimImage(0); // trim it.
        $this->image->setImageFormat($type);
        $this->base64 = base64_encode($this->image);
        echo "<img src='data:image/$type;base64,{$this->base64}'/>"; 
    }

在我的本地环境中(win 8.1,xampp,4gb ram),这很快。

在服务器(godaddy linux,1 GB ram)上,它最大限度地利用了资源,它比我在本地环境中长了10倍(最长4.5秒用于句子长度)。

我定时了课程中的每个功能,发现时间花在了annotateImage()行。

我可以抛出硬件问题,但我想知道是否有更好的方法在图像上写文字?或者一种加快注释工作方式(降低图像质量等)的方法?

1 个答案:

答案 0 :(得分:0)

似乎在(linux)服务器上,shell_exec确实比php扩展快得多;提供更好的窗户时间(甚至低于0.1秒)。另一方面,使用shell_exec,Windows会受到很小的性能影响。

我假设是因为godaddy上的版本 - 截至今天,它是6.5.4-7,这是2009版本。我在我的Windows框上运行6.7.7-4。如果他们正在运行一个5岁版本的程序,那么php扩展可能已经经历了重大改进。