【问题标题】:PHP image comparisonPHP图片对比
【发布时间】:2016-10-20 04:02:09
【问题描述】:

img_1 由 PHP 创建,img_2 保存在服务器上。我正在尝试将它们与图像进行比较,看看它们是否不同,我尝试过,但它不起作用。

$script_img = imagecreatetruecolor(2390, 2400);
$web_img = imagecreatefrompng("URL_TO_IMG");

if ($script_img==$web_img ) {
    echo "SAME";
}
else{
    echo "DIFFERENT";
}

下一个例子有效,但是当我调用imagepng PHP 在浏览器中创建图像或奇怪的字母(如果标题未设置为 image/png),我不希望这样。

$script_img = imagecreatetruecolor(2390, 2400);
$web_img = imagecreatefrompng("URL_TO_IMG");
$rendered = imagepng($web_img);

if ($script_img==$rendered ) {
    echo "SAME";
}
else{
    echo "DIFFERENT";
}

我也试过file_get_contents($script_img) == file_get_contents("URL_TO_IMG"),但没用。

使用md5(file_get_contents(imagecreatetruecolor(2390, 2400))) == md5(file_get_contents(imagecreatefrompng("URL_TO_IMG"))) 有效,但我怀疑这是比较两张图片的最佳/正确方法。


在 PHP 中比较图像的最佳/正确方法是什么?

【问题讨论】:

  • 我已经找到了答案,但我对比较图像的正确方法很感兴趣
  • 首先,您需要非常明确地定义您认为需要两个图像“相等”的内容。这是一个非常普遍讨论的问题,edit 你的问题包括你的研究。
  • 获取img_1并复制粘贴并将其重命名为img_2。现在我们有 2 个相等的图像。
  • 所以您只对逐字节相等的图像文件感兴趣?然后文件的哈希就可以了。

标签: php image-processing image-comparison


【解决方案1】:

你为什么不尝试比较两张图片的 MD5 Hash。

  $md5LocalImg = md5(file_get_contents($script_img));
  $md5WebImg   = md5(file_get_contents($web_img));
  if ( $md5LocalImg == $md5WebImg ){
     echo("SAME");
  }
  else{
    echo("DIFFERENT");
  }

【讨论】:

  • 这可行,但我怀疑这是比较图像的正确方法
  • 我取决于您的要求。如果您想继续处理这些图像,可以使用一些图像处理库。否则 MD5 哈希就可以了。
猜你喜欢
  • 1970-01-01
  • 2011-01-03
  • 2011-03-17
  • 1970-01-01
  • 1970-01-01
  • 2023-01-13
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
相关资源
最近更新 更多