Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何检测源图像中的变化_Php_Image_Image Processing - Fatal编程技术网

Php 如何检测源图像中的变化

Php 如何检测源图像中的变化,php,image,image-processing,Php,Image,Image Processing,我目前有一些用PHP编写的图像处理脚本,用于CMS网站。其中一个会获取客户端上载的源图像,调整其大小,用特定文件名(例如100x100_id240.jpg,用于页面id 240的100 x 100缩略图)写出处理后的图像,最重要的是更改新处理图像上的时间戳以匹配源图像 每次浏览器请求页面时,php脚本都会检查源图像和处理图像上的时间戳,以确保它们匹配-如果不匹配,则客户端必须更改源图像,以便重复处理,新版本将覆盖100x100_id240.jpg。如果时间戳匹配,那么我们不需要重新处理图像,所以

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

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

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

我曾经考虑过在上传时给源图像写一个随机的时间戳,这将解决这个问题。但我宁愿保留这张邮票。 所以我需要另一种方法(不需要太多的处理,比如计算源图像中红色的所有像素)。我想知道是否可以为exif数据或其他东西编写一个独特的代码。但exif只适用于jpg,对吗?
有没有办法解决这个问题?谢谢

您应该尝试计算图像的CRC32并进行比较。这样,您就可以知道图像是否被其他人更改。

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

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

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

检查功能检查该功能处理有多繁重?每次请求图像(或图像的缩略图版本)时,都需要对源图像执行此操作。我假设它会将整个文件(比如300Kb)读入内存,然后执行一些魔术-我的问题是,thas比每次简单地重新处理图像并根据请求动态地重新创建缩略图要快多少?处理有多重?每次请求图像(或图像的缩略图版本)时,都需要对源图像执行此操作。我假设它会将整个文件(比如300Kb)读入内存,然后执行一些魔术-我的问题是,thas比每次简单地重新处理图像并按要求动态重新创建缩略图要快多少?