【发布时间】:2014-08-04 12:59:50
【问题描述】:
我正在尝试使用 PHP Imagick 的 getImageSignature 方法来比较不同的图像并查看它们是否相等,但是当从具有不同版本的不同计算机调用该方法时,即使使用相同的图像文件,我也会得到不同的签名ImageMagick 和操作系统。
在这些情况下我是否应该始终获得相同的签名?
非常感谢。
【问题讨论】:
标签: php imagemagick imagick
我正在尝试使用 PHP Imagick 的 getImageSignature 方法来比较不同的图像并查看它们是否相等,但是当从具有不同版本的不同计算机调用该方法时,即使使用相同的图像文件,我也会得到不同的签名ImageMagick 和操作系统。
在这些情况下我是否应该始终获得相同的签名?
非常感谢。
【问题讨论】:
标签: php imagemagick imagick
在这些情况下我是否应该始终获得相同的签名?
简短的回答是否定的。
Imagick::getImageSignature 包装了MagickGetImageSignature,它在内存和量子色彩空间中基于运行时的虚拟像素生成签名。后者受编译时配置选项或环境参数的影响。版本和主机架构的差异会导致图像签名的变化。
由于签名只是一个 SHA-256 摘要,因此自己生成一个会更简单。
$signature = sha1($image->getImageBlob());
// or subclass the method
class MyImagick extends Imagick {
public function getMyImageSignature() {
return sha1($this->getImageBlob());
}
}
【讨论】: