我们一直在Yii中使用imagemagick几年来让人们在网上“装饰”气球。在php5.4上运行,这一直都很好用。这是一个“气球”的例子 balloon with working decorator 由于各种原因,我们最近将网站升级为在php7上运行。可悲的是,这意味着imagemagick不像过去那样工作。请参阅此链接以获取示例: balloon without working decorator 我不会说它被打破了,因为我不相信它。我想我们需要调整/更新代码。问题是,即使是为我们实施此功能的人也无法解决问题。这是他的话中的问题
第一个命令提取图像的非透明部分,第二个命令提取它。根据我的测试,第一个命令(-alpha extract)工作得很好,但是后者(-background COLOR -alpha形状)会为整个图像着色,而不仅仅是提取的部分。
这是我们尝试使用的代码(并且已成功使用php5.4超过两年):
public function color($params) {
if (isset($params['pattern'])) {
$error = exec(escapeshellcmd($this->dir . 'convert' . $this->ext) . ' ' . $this->cmd_image . ' -alpha extract ' . $this->cmd_image);
$error .= exec(escapeshellcmd($this->dir . 'convert' . $this->ext) . ' ' . $this->cmd_image . ' tile:' . $params['pattern'] . ' \ -compose Multiply -composite ' . $this->cmd_image);
$error .= exec(escapeshellcmd($this->dir . 'convert' . $this->ext) . ' ' . $this->cmd_image . ' -background \'' . $params['color_code'] . '\' -alpha shape ' . $this->cmd_image);
if (!$error) {
return TRUE;
} else {
return FALSE;
}
} else {
$error = exec(escapeshellcmd($this->dir . 'convert' . $this->ext) . ' ' . $this->cmd_image . ' -alpha extract ' . $this->cmd_image);
$error .= exec(escapeshellcmd($this->dir . 'convert' . $this->ext) . ' ' . $this->cmd_image . ' -background \'' . $params['color_code'] . '\' -alpha shape ' . $this->cmd_image);
if (!$error) {
return TRUE;
} else {
return FALSE;
}
}
}
关于我们在php7中做错了什么的所有建议都感激不尽!
谢谢:)