使用php获取图像列表时,如何链接到子目录中的缩略图?
如果标题有点模糊,我很抱歉。。。我对PHP还比较陌生(3个月左右),而且,我的母语不是英语,所以请容忍我:)我也广泛搜索了这个网站和谷歌,试图找到一个解决方案,但没有任何运气 我在images目录中设置了一个脚本,该脚本扫描所有子目录,然后输出一个链接列表,如果单击该列表,您将进入一个页面,其中显示所选子目录的所有图像。该页面的路径为:使用php获取图像列表时,如何链接到子目录中的缩略图?,php,thumbnails,subdirectory,Php,Thumbnails,Subdirectory,如果标题有点模糊,我很抱歉。。。我对PHP还比较陌生(3个月左右),而且,我的母语不是英语,所以请容忍我:)我也广泛搜索了这个网站和谷歌,试图找到一个解决方案,但没有任何运气 我在images目录中设置了一个脚本,该脚本扫描所有子目录,然后输出一个链接列表,如果单击该列表,您将进入一个页面,其中显示所选子目录的所有图像。该页面的路径为: www.mysite.com/images/list_images.php?folderName=RandomFolder 此操作的代码: images/in
www.mysite.com/images/list_images.php?folderName=RandomFolder
此操作的代码:
images/index.php
<?php
$path = 'images/' ;
$results = scandir($path);
for ($i=0;$i<count($results);$i++)
{
$result=$results[$i];
if ($result === '.' or $result === '..')
continue;
if (is_dir($path . '/' . $result))
{
echo "<a href='list_images.php?folderName=$result'>$result</a><br/>";
}
}
?>
--------------------
list_images.php
<?php
if(isset($_GET['folderName']))
$folder=$_GET['folderName'];
$path = 'images/'.$folder.'/' ;
$images = glob($path . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
foreach ($images as $image)
{
echo "<a href='$image'><img src='$image'/></a>";
}
?>
images/index.php
--------------------
list_images.php
现在,我的问题是:
在我的每个图像子目录中,我都有另一个名为“thumbs”的子目录,其中包含-是的,你猜对了-缩略图。每个缩略图的名称与其上方目录中对应的文件完全相同。现在,我如何使上面代码中的img src指向拇指
欢迎任何帮助!提前谢谢你
编辑:
我又看了一遍我的代码,又多写了几行。它仍然不工作,但至少现在它输出缩略图,链接到更大的图像。以下是新代码:
list_images.php
if (isset($_GET['folderName'])) $folder=$_GET['folderName'];
$path = 'images/'.$folder.'/' ;
$thumb_path = ''.$path.'/thumbs/';
$thumbs = glob($thumb_path . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
$images = glob($path . '*.{jpg,jpeg,png,gif}', GLOB_BRACE);
foreach ($thumbs as $thumb){
foreach ($images as $image){
echo "<a class='fancybox' href='$image'><img src='$thumb'/></a>";
}
}
list_images.php
如果(isset($\u GET['folderName']))$folder=$\u GET['folderName'];
$path='images/'。$folder'/';
$thumb_path='.$path.'/thumbs/';
$thumbs=glob($thumb_path.*.{jpg,jpeg,png,gif}',glob_括号);
$images=glob($path.'*.{jpg,jpeg,png,gif}',glob_括号);
foreach($thumbs作为$thumb){
foreach($images作为$image){
回声“;
}
}
现在可以用了。唯一的问题是,它为每张图片输出13个完全相同的缩略图,而且它会输出13次(对于包含13个图像文件的目录),因此总共有169个缩略图
您知道如何解决此问题吗?如果您确定文件夹名为
thumbs
,则没有理由不能对其进行硬编码。请看以下内容
echo "<a href='$image'><img src='thumbs/$image'/></a>";
echo”“;
您可以在路径上执行str\u replace
如果图像的路径为mydir\image01\pic01.jpg
str_replace('image01','image01\thumb',$image);
请指向
mydir\image01\thumb\pic01.jpg
谢谢您的快速响应。我已经试过你的建议了。它可以工作,但缩略图不知何故不起作用-它们显示为小“破碎”图像。。。(我不知道它们叫什么)但是我不需要为每个imagefolder做str_替换吗?啊,我现在看到你有了$path='images/'.$folder./'
。为什么不把thumbs/
放在它后面,这样它就可以扫描thumbs文件夹了?不,那也不行——我之前已经试过了。这也会将链接转换为指向拇指,而不是更大的文件。最后一部分是使用@Sajans解决方案解决的。您是否检查了生成的html中图像的路径?听起来在引用缩略图时出现了一些错误。由于代码的设置方式,指向缩略图的路径(使用此方法)将是images/random\u folder/images/random\u folder/thumbs
str_replace('image01','image01\thumb',$image);