下载安装文档 :http://download.pureftpd.org/pub/pure-ftpd/misc/libpuzzle/doc/README
http://download.pureftpd.org/pub/pure-ftpd/misc/libpuzzle/doc/README-PHP
之后重启服务(apache/nginx) 然后查看phpinfo里面是否包含了~~ Libpuzzle
<?php
# 获取2个图片的签名值
$cvec1 = puzzle_fill_cvec_from_file('img1.jpg');
$cvec2 = puzzle_fill_cvec_from_file('img2.jpg');
#对比2个签名的差距,范围在0-1之间 0完全吻合 1不吻合
$d = puzzle_vector_normalized_distance($cvec1, $cvec2);
#判断是否一致
#PUZZLE_CVEC_SIMILARITY_THRESHOLD==0.6; //比较相似
#PUZZLE_CVEC_SIMILARITY_HIGH_THRESHOLD==0.7; //好像相似
#PUZZLE_CVEC_SIMILARITY_LOW_THRESHOLD==0.3; //差不多
#PUZZLE_CVEC_SIMILARITY_LOWER_THRESHOLD==0.2 //基本一样
if ($d < PUZZLE_CVEC_SIMILARITY_LOWER_THRESHOLD) {
echo "图片相似\n";
} else {
echo "不相似, 差距值=$d\n";
}
#压缩签名,方便存入数据库
//返回的压缩签名值编码为CP936不是utf8 ,入库前需要转换下编码
$compress_cvec_new = utf8_encode(addslashes($compress_cvec));
?>
$compress_cvec1 = puzzle_compress_cvec($cvec1);
$compress_cvec2 = puzzle_compress_cvec($cvec2);
//返回的压缩签名值编码为CP936不是utf8 ,入库前需要转换下编码
$compress_cvec_new = utf8_encode(addslashes($compress_cvec));
先把远程的图片生成到本地后 使用该方法获取签名值,
获取相识度:$distance = puzzle_vector_normalized_distance($sign1,$sign2);
$distance 与0.3 比较 。
命令行直接比较
puzzle-diff /alidata/www/wwwroot/public/Uploads/Images/Index/lyq.jpg /alidata/www/wwwroot/public/Uploads/Images/Index/lyq1.jpg
puzzle-diff /alidata/www/wwwroot/public/Uploads/Images/Index/lyq.jpg /alidata/www/wwwroot/public/Uploads/Images/Index/lyq1.jpg