如何检测源图像中的更改

时间:2011-09-20 07:05:18

标签: php image image-processing

我目前有一些用PHP编写的图像处理脚本,用于CMS网站。其中一个获取客户端已上传的源图像,调整其大小,使用特定文件名写出已处理的图像(例如,对于页面ID为240的100 x 100缩略图,为100x100_id240.jpg),最重要的是更改新的时间戳。已处理的图像以匹配源图像。

每次浏览器请求页面时,php脚本都会检查源图像和已处理图像的时间戳,以确保它们匹配 - 如果不匹配则客户端必须更改源图像,以便重复处理新版本将覆盖100x100_id240.jpg。如果时间戳匹配,那么我们不需要重新处理图像,所以我们只使用已经处理的缩略图。

这很有效。但是,我偶尔会得到一个客户端上传一堆具有完全相同时间戳的图像到100秒。如果那时然后将页面的源图像更改为具有相同时间戳的备用图像,则PHP脚本快速地将其更新,并将源图像时间戳与处理后的图像时间戳进行比较,发现时间戳是相同的,因此不要重新处理新的源图像。然后我们得到一个不正确的缩略图输出。

我想过可能会在上传时为源图像写一个随机时间戳,这样可以解决问题。但我宁愿保留这个邮票。 所以我需要另一种方法(在处理上并不重要,例如计算源图像中的所有像素,例如红色)。我想知道我是否可以编写一个独特的代码来exif数据或其他东西。但exif仅适用于jpg吗? 关于如何解决这个问题的任何想法?感谢

2 个答案:

答案 0 :(得分:3)

您可以使用md5_filesha1_file来检查文件是否相同。

答案 1 :(得分:2)

您应该尝试计算图像的CRC32并进行比较。通过这种方式,您可以了解图像是否被其他人更改。