自动图像比较

时间:2018-05-18 06:16:23

标签: php

我正在比较EmojiOne表情符号图片的版本。

我将每个EmojiOne表情符号存储在一个MySQL表中,我知道它首次发布的emojione版本。

我有另一张EmojiOne版本表。

我有一个PHP脚本循环遍历版本,然后为网格中的每个表情符号显示每个版本的图像。每个图像都有一个复选框,其中包含由管道分割的版本号和表情符号ID。

对于每个表情符号,我这样做:

  1. 标记图像 - 标记第一张图片,因为它是第一个版本
  2. 勾选与上一张图片设计不同的任何图片
  3. 提交表格
  4. 表单通过提交的数据进行处理,并将结果加载到版本矩阵表中,其中包含表情符号ID和版本ID - 例如

       int  emoji_id  version_id  entered              
    ------  --------  ----------  ---------------------
      2257         1           1  2018-05-17 18:27:09  
      2258         1          19  2018-05-17 18:27:09  
      2259         1          22  2018-05-17 18:27:09  
      2260         1          29  2018-05-17 18:27:09  
      2261         1          37  2018-05-17 18:27:09  
      2262         2           1  2018-05-17 18:28:01  
      2263         2          19  2018-05-17 18:28:01  
      2264         2          22  2018-05-17 18:28:01  
      2265         2          24  2018-05-17 18:28:01  
      2266         2          29  2018-05-17 18:28:01  
      2267         2          37  2018-05-17 18:28:01  
      2268         3           1  2018-05-17 18:28:27  
      2269         3          19  2018-05-17 18:28:27  
      2270         3          22  2018-05-17 18:28:27  
      2271         3          29  2018-05-17 18:28:27  
      2272         3          37  2018-05-17 18:28:28  
      2273         3          41  2018-05-17 18:28:28
    
  5. 我制作的工具对于给定的一组表情符号看起来像这样:

    enter image description here

    它也很容易出现人为错误。

    我需要做2,666张图片 - 所以这是一个非常耗时的过程,因为我可以在下班后的一个晚上和其他承诺中获得最多约100个表情符号,因此大约需要2周时间比较满载的图像。

    例如,对于1F602表情符号,SVG版本的区别如下(一旦忽略图像相同的所有版本):

    PNG的不同之处如下:

    我想知道是否有办法使用图像比较解决方案自动执行此操作?

    所有图像都远程保存在CDN上(SVG图像为cloudflare,PNG图像为jsdelivr) - 例如

    1. https://cdnjs.cloudflare.com/ajax/libs/emojione/1.0.0/assets/svg/1F602.svg
    2. https://cdn.jsdelivr.net/emojione/assets/3.0/png/128/1f602.png
    3. 我意识到我可能要求用棍子上的月亮"而这是一个非常模糊的问题。

1 个答案:

答案 0 :(得分:-1)

无论何种类型,您都必须使用哈希函数来比较图像。

以下是使用sha1比较2张图像的函数示例:

function compare_distant_image($url_image1, $url_image1) {
// return true if the images are the same

    $content1 = file_get_contents($url_image1);
    $content2 = file_get_contents($url_image2);

    $hash1 = sha1($content1);
    $hash2 = sha1($content2);

    return $hash1 == $hash2;
}