我是php的新手,我正在创建一个图片库。我写的代码工作,它运作良好,但我需要上传文件到服务器。该图库的工作原理是将缩略图图像加载到页面上,当点击缩略图时,弹出的fancybox将会打开并显示缩略图的高分辨率版本。
文件夹结构中有2个图像。照片和/ gfx /照片/拇指中的照片和缩略图。我正在尝试编写一个PHP脚本,检查是否已将新照片添加到/ gfx / photos /文件夹,并自动在/ gfx / photos / thumb文件夹中创建缩略图。我可以做调整大小部分,但我需要帮助比较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... */
}
?>
这段代码可以用来互相检查文件,还是应该使用不同的代码。
感谢您的帮助!
答案 0 :(得分: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
}