我有一个用PHP编写的画廊脚本,该脚本基于存储在给定文件夹中的图像生成一个画廊。对于直截了当的图库来说,这很好用,但是我想添加一个srcset值,该值从高清晰度屏幕上标记为“大”的文件夹中的图像生成图库。
我试图通过包含一个名为$ imagesBig的变量来复制生成小图像的代码部分,但这只是为生成的每张图片回显文件夹中的最终图像。
每个文件夹中的文件名相同,只是文件夹变量更改。
<?php
$rsContent = "rsContent";
$imgContainer = "imgContainer";
$directoryBig = "img/acts/".$category."/".$thisPage."/gallery/big/";
$imagesBig = glob($directoryBig . "*.jpg");
foreach($imagesBig as $imageBig);
$directorySmall = "img/acts/".$category."/".$thisPage."/gallery/small/";
$imagesSmall = glob($directorySmall . "*.jpg");
foreach($imagesSmall as $imageSmall) {
echo "<div class=" .$rsContent. "><div class=" .$imgContainer. "><img src=" .$imageSmall. " srcset='$imageSmall 1x, $imageBig 2x' alt=" .$thisPage. " /></div></div>";
}
?>
我希望最终的输出看起来像这样:
<div class="rsContent">
<div class="imgContainer">
<img src="img/acts/theater/kikkerkusje/gallery/small/1.jpg" srcset="img/acts/theater/kikkerkusje/gallery/small/1.jpg 1x, img/acts/theater/kikkerkusje/gallery/big/1.jpg 2x" alt="kikkerkusje">
</div>
</div>
感谢您的帮助。
答案 0 :(得分:1)
问题是您有两个完全独立的循环,“大”循环实际上不做任何事情(;
末尾的foreach()
)只是在循环上进行了迭代而没有输出。
您需要组合两组结果,这是假定图像列表将在每个目录中以相同的顺序出现(有点脆弱-如果可能会出现问题,最好对列表进行排序)。
首先获取大图像列表,然后在循环输出小图像时,选择匹配的大图像(使用$imagesBig[$index]
)...
$directoryBig = "img/acts/".$category."/".$thisPage."/gallery/big/";
$imagesBig = glob($directoryBig . "*.jpg");
$directorySmall = "img/acts/".$category."/".$thisPage."/gallery/small/";
$imagesSmall = glob($directorySmall . "*.jpg");
foreach($imagesSmall as $index=>$imageSmall) {
$imageBig = $imagesBig[$index];
echo "<div class=" .$rsContent. "><div class="
.$imgContainer. "><img src=" .$imageSmall
. " srcset='$imageSmall 1x, $imageBig 2x' alt="
.$thisPage. " /></div></div>";
}