我正在开发一款图片上传工具,需要检查图片的md5值,以防止上传重复的图片。当一张图片被上传后,我会使用上传路径创建一个新的Imagick对象,并获取图像内容。调用md5()函数并传递图像内容的返回值与PHP的md5_file和命令行中的md5sum返回的值不同。由于需要比较上传图像的md5值与现有图像的md5值,因此将md5存储在数据库中的设计图像对象上。然而,问题在于每次上传相同的图片时,对新的Imagick对象内容调用md5函数返回的值都不同。
$sUploadedImage = '/home/user/test-12x14.png';
md5(file_get_contents($sUploadedImage));
returns 2352513cde38cfb678cf46b6421f2f8b
md5_file($sUploadedImage);
returns 2352513cde38cfb678cf46b6421f2f8b
// md5sum on Linux
md5sum /home/user/test-12x14.png
returns 2352513cde38cfb678cf46b6421f2f8b
$oImagick = new Imagick($sUploadedImage);
md5($oImagick->getImageBlob());
returns 0a8acb080aedf6245b56d39fb705705f
//returns different value on everytime same image is uploaded
$sNewPath = sfConfig::get('sf_root_dir') . '/design-images/' .$sMd5 .'.png';
$oNewImage->writeFileWithFormat($sNewPath, 'png');
md5(file_get_contents($sNewPath));
returns 2352513cde38cfb678cf46b6421f2f8b
md5_file($sNewPath);
returns 2352513cde38cfb678cf46b6421f2f8b
为什么Imagick中md5()函数的结果不同呢? 谢谢。