1. public function action_test1212(){
$img1 = 'http://img.bstapp.cn/skus/315125071137/a69ba074f8f234fdc41b9d1923df48a2.jpg@1e_400w_400h_80Q_1x.jpg';
$img2 = 'http://img.bstapp.cn/skus/315125071138/82effe31fed606dcbb96629f3dbfc00a.jpg@1e_400w_400h_80Q_1x.jpg';
$img3='http://img.bstapp.cn/skus/316130100340/65a85864d9765df1c1826f7af18b6fe1.jpg@1e_400w_400h_80Q_1x.jpg';
$bimg1 = file_get_contents($img1);
$bimg2 = file_get_contents($img2);
if($bimg2==$bimg1){
GF::printr('图片相同');
}else{
GF::printr('图片不相同');
}
$img1 = 'http://img.bstapp.cn/skus/315125071137/a69ba074f8f234fdc41b9d1923df48a2.jpg@1e_400w_400h_80Q_1x.jpg';
$img2 = 'http://img.bstapp.cn/skus/315125071138/82effe31fed606dcbb96629f3dbfc00a.jpg@1e_400w_400h_80Q_1x.jpg';
$img3='http://img.bstapp.cn/skus/316130100340/65a85864d9765df1c1826f7af18b6fe1.jpg@1e_400w_400h_80Q_1x.jpg';
$bimg1 = file_get_contents($img1);
$bimg2 = file_get_contents($img2);
if($bimg2==$bimg1){
GF::printr('图片相同');
}else{
GF::printr('图片不相同');
}
}
2
$imagefile1 = "http://www.domain.com/im1.png";
$imagefile2 = "http://www.domain.com/im2.png";
var_dump(sha1_file($imagefile1) == sha1_file($imagefile2));
3.如果图片小的话用md5_file和sha1_file就挺好的,但是如果图片很大的话用这两个函数就悲催了。我说个偷懒的办法哈,就是首先读取图片的头几个字节(例如:1024个长度),然后比较,再读取文件的最后几个字节比较(例如:1024),如果不一样,则两个图片不一样,这样可以很快的定位的大图片的不一样,不用hash整个文件,如果头和尾都一样的,那么基本上这个图片就是一样的,当然也可能是两张不一样的图片,但毕竟这种情况少,如果不放心可以再随机从中间取几个字节进行比较,或者对整个文件再进行一次md5_file比较也行,这样处理起来就会少很大的压力。不然所有图片都md5会要人命的。