优化 Imagick annotateImage

Optimizing Imagick annotateImage

我正在使用 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 内存)上,它会耗尽资源,并且比在我的本地环境中花费的时间长 10 倍(最多 4.5 秒 表示句子长度)。

我对 class 中的每个函数进行了计时,发现时间都花在了 annotateImage() 行。

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

看来在(linux)服务器上,shell_exec确实比php扩展快很多;给出比 windows 更好的时间(甚至低于 0.1 秒)。另一方面,windows 对 shell_exec.

的性能影响很小

我假设这是因为 godaddy 上的版本 - 截至今天,它是 6.5.4-7,这是一个 2009 版本。我在 windows 盒子上 运行 6.7.7-4。如果它们是 运行 该程序的 5 年前版本,则 php 扩展可能从那时起经历了重大改进。