由于相似图片搜索的php实现的 API 不怎么符合我的用途,所以我重新定义 API 的架构,改写成比较简单的函数方式,虽然还是用对象的方式包装。复制代码 代码如下:<?php     /**   * 图片相似度比较   *   * @version     $Id: ImageHash.php 4429 2012-04-17 13:20:31Z jax $   * @author      jax.hu   *   *    *  //Sample_1   *  $aHash = ImageHash::hashImageFile("wsz.11.jpg");   *  $bHash = ImageHash::hashImageFile("wsz.12.jpg");   *  var_dump(ImageHash::isHashSimilar($aHash, $bHash));   *   *  //Sample_2   *  var_dump(ImageHash::isImageFileSimilar("wsz.11.jpg", "wsz.12.jpg"));   *    */        class ImageHash {           /**取样倍率 1~10       * @access public       * @staticvar int       * */       public static $rate = 2;           /**相似度允许值 0~64       * @access public       * @staticvar int       * */       public static $similarity = 80;           /**图片类型对应的开启函数       * @access private       * @staticvar string       * */       private static $_createFunc = array(           IMAGETYPE_GIF   =>"imageCreateFromGIF",           IMAGETYPE_JPEG  =>"imageCreateFromJPEG",           IMAGETYPE_PNG   =>"imageCreateFromPNG",           IMAGETYPE_BMP   =>"imageCreateFromBMP",           IMAGETYPE_WBMP  =>"imageCreateFromWBMP",           IMAGETYPE_XBM   =>"imageCreateFromXBM",       );               /**从文件建立图片       * @param string $filePath 文件地址路径       * @return resource 当成功开启图片则传递图片 resource ID,失败则是 false       * */       public static function createImage($filePath){           if(!file_exists($filePath)){ return false; }               /*判断文件类型是否可以开启*/           $type = exif_imagetype($filePath);           if(!array_key_exists($type,self::$_createFunc)){ return false; }               $func = self::$_createFunc[$type];           if(!function_exists($func)){ return false; }               return $func($filePath);       }               /**hash 图片       * @param resource $src 图片 resource ID       * @return string 图片 hash 值,失败则是 false       * */       public static function hashImage($src){           if(!$src){ return false; }               /*缩小图片尺寸*/           $delta = 8 * self::$rate;           $img = imageCreateTrueColor($delta,$delta);           imageCopyResized($img,$src, 0,0,0,0, $delta,$delta,imagesX($src),imagesY($src));               /*计算图片灰阶值*/           $grayArray = array();           for ($y=0; $y=$average) ? "1" : "0";           }               return $hashStr;       }               /**hash 图片文件       * @param string $filePath 文件地址路径       * @return string 图片 hash 值,失败则是 false       * */       public static function hashImageFile($filePath){           $src = self::createImage($filePath);           $hashStr = self::hashImage($src);           imagedestroy($src);               return $hashStr;       }               /**比较两个 hash 值,是不是相似       * @param string $aHash A图片的 hash 值       * @param string $bHash B图片的 hash 值       * @return bool 当图片相似则传递 true,否则是 false       * */       public static function isHashSimilar($aHash, $bHash){           $aL = strlen($aHash); $bL = strlen($bHash);           if ($aL !== $bL){ return false; }               /*计算容许落差的数量*/           $allowGap = $aL*(100-self::$similarity)/100;               /*计算两个 hash 值的汉明距离*/           $distance = 0;           for($i=0; $i

php 图片相似度对比算法,PHP实现的简易版图片相似度比较相关推荐

  1. 不同长度的字符串/中文串相似度对比算法

    1.背景介绍 今天在公司接到一个需求,大概是这样的.我们ERP系统数据库有张customer(客户)表,其中有个字段是小区名称(plotName),当初在录入数据时没有对这一字段做界定和规范,由人工手 ...

  2. 网页去重||SimHash(高效的文本相似度去重算法)——适合大批量文档的相似度计算

    网页去重 之前我们对下载的url地址进行了去重操作,避免同样的url下载多次.其实不光url需要去重,我们对下载的内容也需要去重. 在网上我们可以找到许多内容相似的文章.但是实际我们只需要其中一个即可 ...

  3. php用户名相似度对比,PHP-如何快速计算出用户的相似度

    首先,我假设你是想给用户推荐相似用户,因为如果给用户推荐文章或其他内容,思路是不同的. 一.先创建向量模型,根据不同的网站类型,需要考虑的因素不同,以下几种方式可以做合起来使用 1.考虑用户的哪些数据 ...

  4. php 图片相似度对比算法,php比较图片相似度代码示例

    /** * 图片相似度比较 * * @version $Id: ImageHash.php 4429 2012-04-17 13:20:31Z jax $ * @authorjax.hu * www. ...

  5. php 图片相似度对比算法,图像处理技术之图片相似度比较

    Today,工作中发现需要去除图片上的水印,由于涉及文章太多,手动重新编辑很慢且容易出错.于是想到了使用脚本比较全部图片的相似度,然后替换文件的方式来达到去除水印效果.在完成这项工作前,我们需要找到所 ...

  6. android 字符串相似度对比,Android中的OpenCV图像比较和相似度

    Andrii Omelc.. 7 但是我们可以看到两个图像都具有相同的视觉元素(in). 因此,我们应该比较不是整个图像,而是"相同的视觉元素".Match如果不比较"模 ...

  7. OCR图片相似度对比和分类算法

    目录 算法清单 前提知识 一.像素点对比 二.重心对比 三.投影比对 四.分块对比 Logistic回归的直观认识 带入数据进行训练 使用训练好的模型 训练模型的代码 参考文献: Ocr文字识别其中的 ...

  8. CV之Hog+HamMingDistance:基于Hog提取和汉明距离对比的应用—图像相似度对比之for循环将多个成对图片依次对比并输出相似度

    CV之Hog+HamMingDistance:基于Hog提取和汉明距离对比的应用-图像相似度对比之for循环将多个成对图片依次对比并输出相似度 目录 测试数据集 核心代码 相关文章 ML之相似度计算: ...

  9. php 图片一摸一样,PHP实现图片相似度对比

    PHP如何实现图片相似度对比?本文将通过感知哈希算法来实现搜索相似图片.希望对大家有所帮助. 感知哈希的优点是简单快速,不受图片大小缩放的影响,缺点是图片的内容不能变更.实际应用中,往往采用更强大的p ...

  10. 列举一些算法对照片、图像进行相似度对比分析比较

    转:列举一些算法对照片.图像进行相似度对比分析比较 首先: 图片如下                                                    18.jpg        ...

最新文章

  1. AE,按照属性值关系选择要素
  2. python数据库教程_python教程:数据库
  3. 比特币官方客户端钱包是用什么语言开发的_『学概念找员外』比特币网络(三)...
  4. Java并发笔记(三)
  5. 微型计算机主机箱内的所有部件均由大规模,2012年自考《计算机应用基础》模拟试题...
  6. nofollow标签_SEO技术动态:谷歌升级Nofollow标签的作用
  7. python slice函数_python中slice函数如何实现?
  8. php webm文件头,webm EBML文件头分析
  9. roseha 8.9 for linux oracle 11g,RoseHA 9.0 for Linux配合Oracle12c配置文档_v2.0-2015-04.pdf
  10. BoundsChecker检查内存泄露 使用步骤
  11. html动画引擎,AlloyStic HTML5骨骼动画
  12. LOB浅析(CLOB/BCLOB/NCLOB)
  13. Rockchip官方开发板的Android固件下载地址汇总
  14. php微信支付扫码源码下载,微信支付:扫码支付+APP支付
  15. php截断,php include 路径截断漏洞的利用
  16. ToDesk企业版赋能零售行业,打造智慧门店
  17. NVENC/NVDEC 10bits 编程
  18. 专业人士解释杜邦分析法(二)
  19. gmail 无法登录 原因解决
  20. 环信IM集成问题整理——常见集成问题

热门文章

  1. C语言的标准内存分配函数
  2. java基础(十四)-----详解匿名内部类——Java高级开发必须懂的
  3. 利用vue-gird-layout 制作可定制桌面 (一)
  4. 从源码编译安装TensorFlow
  5. Zabbix 监控 MongoDB
  6. HDU 3695 / POJ 3987 Computer Virus on Planet Pandora
  7. 8-06. 畅通project之局部最小花费问题(35)(最小生成树_Prim)(ZJU_PAT)
  8. 随笔 2016-1-4
  9. Python open()函数文件打开、读、写基础操作
  10. 按位与、或、异或等运算方法(转)