2011-05-17 52 views
1

我有一个简单的PHP脚本,使用imagecreatefromjpeg创建原始缩略图版本并将其保存到新文件夹。为了加速解析(在上传到静态网站之前,所有在后端完成)我在创建之前使用file_exist检查它是否存在并显示 - 如果不是创建新的并显示。这工作正常,但如果原始图像更改脚本不会生成,因为缩略图图像存在它的旧形式。如果原始文件已更改,创建新的JPG图像缩略图

我想我需要使用MD5测试,但作为n00b不知道如何测试是否由此产生的缩略图版本将不同于主图像产生的现有。

当前逻辑:

if thumb exist == do nothing, 
if thumb does not exist == create it 

附加逻辑

if thumb will change due to change in original == create it, 
if thumb will stay the same == do nothing 

现有PHP是非常差,打一顿在一起,以便高兴用于从新鲜(专家)视图中的任何指针。

谢谢,约翰

回答

0

你想检查文件被修改的时间。

http://php.net/manual/en/function.filemtime.php

如果原始文件的时间戳比缩略图的时间戳更新,然后作出新的缩略图。

谢谢你们 - 不知道这会工作,如果原始图像被创建之前,但仅只是被用来例如库存图片是在文件的其他地方,然后拖入/图像/文件夹,替换现有的形象,但与相同的文件名..时间戳显示日期拖动或创建时间?

如果移动文件,修改的时间戳不会更改。

如果您复制文件,则通过复制操作创建副本。

当您创建文件时,其Date修改时间戳与其创建日期时间戳相同。

因此,如果您的拖动操作正在复制文件,则修改后的时间戳就是文件被复制时刻的时间戳。

+0

约的阻力尼斯提示 - 测试上一个简单的脚本和时间改变。 – user757542 2011-05-18 07:32:18

0

它应该足以比较拇指的最后修改日期和原始图像。如果原始图像比拇指更新,则应重新创建它。

0

简而言之,假设我们有一张200x200的图像,里面充满红色和红色(所以是红色方块)。我们创建80x80缩略图。如果原始图像发生变化,但仍然只是相同的红色填充正方形,则缩略图不会更改。

事情是,为了检测到这一点,你需要创建缩略图或应用先进的图像比较技术,你可以保存它。

然而,通过将缩略图命名为原始MD5哈希,您可以使用MD5创建从原始到缩略图的一对一映射。这种方法的缺点是,当他们的原件不再使用时,您需要一种方法来删除未使用的缩略图。

要使用这种方法类似:

<?php 
$thumbname = md5_file($bigimage_path); 
if(!file_exists("images/thumbs/$thumbname.jpg")) 
{ 
    create_thumb($bigimage_path, $thumbname); 
} 
?> 

这种方法将完成,如果你有相同的大图像不同的文件名,他们将全部映射到相同的缩略图。要复制

+0

我喜欢这个想法 - 目前它可能比我的n00b PHP技术稍微有点儿,但是对于后面的应用程序,我应该在未来需要更复杂的东西。 – user757542 2011-05-18 07:35:12