0

我是 php 新手,我正在创建一个图片库。我编写的代码工作正常,但我需要将文件上传到服务器。画廊通过将缩略图加载到页面上来工作,当单击缩略图时,将打开一个花式框弹出窗口,并将显示缩略图的高分辨率版本。

文件夹结构中有 2 张图像。照片位于 /gfx/photos 中,缩略图位于 /gfx/photos/thumbs 中。我正在尝试编写一个 PHP 脚本来检查新照片是否已添加到 /gfx/photos/ 文件夹中,并自动在 /gfx/photos/thumbs 文件夹中创建缩略图。我可以做调整大小的部分,但我需要帮助比较 2 个文件。缩略图和照片具有完全相同的名称,它们只是位于不同的位置。

我有一个像这样工作的图像数组:

<?PHP
    $dir = "gfx/photos/thumbs";
    $files = scandir($dir);

    foreach ($files as $key => $value);
    $result = count($files);
    for ($i = 0; $i < $result; $i++) {
      /* loads appropriate code for every file... */
    }

?>

这段代码可以用来检查文件还是我应该使用不同的代码。

感谢您的帮助人们!

4

1 回答 1

0

这是获得此结果的一种简单方法,只要目录不填满数百万张图像就可以很好地工作,但如果您能够拥有数百万张图像,您可能应该将它们分解为更小的目录。

由于 scandir 返回一个整数索引数组,您通常必须进行一些数组搜索才能找到您的图像。然而。如果您使用array_flip执行此操作:

$image_name = "some_image.jpg";

$dir = "gfx/photos/thumbs";
$files = scandir($dir);

$files = array_flip($files); // makes the values = to keys and keys = values

// now you have an 0(1) look up table that you can simply check if the key exists
// which, now that we flipped the array, are the file names
if(!isset($files[$image_name])){
    // create the thumbnail etc
}
于 2012-05-22T15:00:16.800 回答