繁体   English   中英

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

[英]Determine if images are the same, but different sizes

我目前正在处理大量图像(超过3000张),每张图像都有两个副本。 一大一小。 问题是我没有任何链接可以说哪个小图像映射到哪个大图像。

我大致知道哪个大图像转到哪个小图像(我有一个数组,每个小图像最多包含5种可能性),我想循环遍历数组并将每个大图像与小图像进行比较,以了解如果是同一张图片但已调整大小。

TLDR /无法理解:PHP中有没有一种简单的方法可以比较两个相同的图像(一个是200x200,另一个是500x500),并确定它们是否是同一幅图像? ?

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

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

编辑:这是此已实施http://www.thismayhem.com/php/comparing-images-with-php-gd/的示例

我将使用imagemagick库调整大小并比较图像。 我会用exec()称呼它

首先,使用convert命令http://www.imagemagick.org/script/convert.php调整大图的大小

然后,使用compare命令http://www.imagemagick.org/script/compare.php将小图像与调整后的图像进行compare

您可以做的就是拍摄一张大图片,将其缩放为小图片的大小,然后检查那里的一些随机像素区域。 如果图片确实不同,则可以使用平均等值。 两个图像的颜色。

但是这种方式确实是性能的缺陷...

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

如果您是我,则可以手动对它们进行排序,也可以选择基于颜色直方图的方法。

我刚刚看到所有“图像都是JPG,它们分别保存在两个文件夹中(大和小)”。 您为什么不扔掉一点并重新创建它,但是这次您还记得哪个属于哪个?

您是否尝试过调整大图像中的1个是否与小图像中的一个完全相同(手动使用Md5找出该图像)。

如果是这样,那么您的解决方案是将较大的图像批量调整为一个tmp文件,并对其进行md5 md生成一个bigimagemd5s数组,然后对较小的md5。

仅当小图像是使用php GD算法生成的并且您具有与以前使用的相同的压缩级别和大小时,此方法才有效。

手动对它们进行排序将花费您少得多的时间。

请检查此链接: 比较PHP中的2个图像

似乎最好使用ImageMagick扩展,尽管您可能必须先将较大的图像缩小到与较小的图像相同的大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM