优化 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 扩展可能从那时起经历了重大改进。
我正在使用 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 扩展可能从那时起经历了重大改进。