判断图片是否相同

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('图片不相同');
        }

    }

$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会要人命的。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值