确定图像是否相同,但大小不同

时间:2011-10-21 11:36:01

标签: php image compare

我目前正在处理大量图片(超过3000张),每张图片都有两份;一个大,一个小。问题是我没有任何类型的链接来说明哪个小图像映射到哪个大图像。

我大致知道哪个大图像到哪个小图像(我有一个数组,每个小图像包含多达5种可能性),我想围绕数组循环并将每个大图像与小图像进行比较,看它是否是相同的图像,但重新调整大小。

TLDR /不明白:在PHP中有没有简单的方法来比较两个相同的图像,一个是(比方说)200x200而另一个是(比方说)500x500,并确定它们是否是一个图像同样的事情?

7 个答案:

答案 0 :(得分:2)

最简单的方法是将大小调整为小尺寸(例如16x16或32x32,具体取决于您希望使用多少CPU来跟踪整个过程中每个文件的名称。

然后使用imagecolorat()比较每行/每列的像素颜色。然后,您可以定义需要匹配的百分比,以便将其视为相同的图片。

编辑:以下是此实施http://www.thismayhem.com/php/comparing-images-with-php-gd/

的示例

答案 1 :(得分:1)

我会使用imagemagick库来调整大小并比较图像。我会用exec()

来称呼它

首先,使用convert命令http://www.imagemagick.org/script/convert.php

调整大图像的大小

然后,使用compare命令http://www.imagemagick.org/script/compare.php

将小图像与调整大小后的图像进行比较

答案 2 :(得分:1)

你可以做的事情是,拍大片,将其缩放到小图片的大小,并检查那里的一些随机像素区域。如果图片真的不同,你可以使用类似平均值的东西。两种图像的颜色。

但这种方式真的很糟糕......

答案 3 :(得分:1)

不,没有same_image_but_in_different_sizes()函数返回true或false。

如果我是你,我要么手动排序,要么选择基于颜色直方图的方法。

我刚看到所有“图像都是JPG,它们被保存在两个文件夹中;大小不一”。你为什么不把它扔掉并重新创造它,但这次你还记得哪个属于哪个?

答案 4 :(得分:0)

您是否尝试过调整大图像的大小为1会创建与较小图像之一完全相同的图像(手动使用Md5来查找它)。

如果确实如此,那么你的解决方案就是将较大的图像批量调整为tmp文件,md5建立一个bigimagemd5s数组,然后你将md5调整为较小的图像。

此方法仅在使用php GD算法生成小图像且您具有与之前使用的压缩级别和大小相同的情况下才有效。

答案 5 :(得分:0)

手动对它们进行排序会带来更多,更少的时间。

答案 6 :(得分:0)

请检查此链接: Compare 2 images in php

似乎使用ImageMagick扩展程序是您最好的选择,尽管您可能不得不首先将较大的图像缩小到与较小的图像相同的尺寸。