按顺序在目录中加载图像,加载填充图像代替缺失图像

时间:2015-08-21 19:40:20

标签: php image

所以我在一组中有一组20张图像,都标记为狗。所以dog01,dog02,dog03等我正在使用这段代码将它们从目录中拉出来并将它们显示为5行,分为4行。

dog01   dog02   dog03   dog04   dog05
dog06   dog07   dog08   dog09   dog10 (etc.)

我正在使用此代码从目录加载图像,并按顺序加载它们。

<?php
$dirname = "images/";
$images = glob($dirname."dog*.png");
foreach ($images as $i=>$image) {
$title = pathinfo($image);
echo '<img class="deck" src="'.$image.'" alt="'. $title['filename'].'" title="'.$title['filename'].'">';
if(($i+1)%5 == 0) echo '<br />';
}
?>

但是,我想知道是否有办法获得它,以便如果目录中缺少其中一只狗,它会在其位置加载填充,并继续按顺序加载其他狗。因此,如果缺少dog03,它将如下所示:

dog01   dog02   filler   dog04   dog05

它会显示填充符,并继续执行序列。我真的不确定我是否可以在PHP中实现这一点。如果有人知道我需要采取什么方法,那将不胜感激。我应该注意到填充图像位于另一个名为“fillers /".

的目录中

提前致谢。

1 个答案:

答案 0 :(得分:2)

我认为你有两种方法可以解决这个问题。第一个是在php中不担心它,并将填充图像加载为背景图像。通常情况下,图像将加载到填充图像上,但如果图像未加载,则填充图像将保持可见状态。

另一种方法是测试文件是否存在。

作为背景图片:

.deck {
  //whatever you had here
  background-image: url( "/filler/filler.png" );
}

您可能需要在图像周围创建容器div,然后将css放在其上。请注意,如果没有设置明确的宽度或高度,这将不起作用,因为背景图像不会为其附加的元素指定任何宽度或高度。

事先通过测试:

<?php
$dirname = "images/";
$images = glob($dirname."dog*.png");
foreach ($images as $i=>$image) {
  if( file_exists( $image ) ) {
    $title = pathinfo($image);
    echo '<img class="deck" src="'.$image.'" alt="'. $title['filename'].'" title="'.$title['filename'].'">';
  } else {
    echo '<img class="deck filler" src="/filler/filler.png" alt="This image does not exist." title="This image does not exist.">';
  }
  if(($i+1)%5 == 0) echo '<br />';
}
?>

如果您在安全模式下运行php,则此方法可能无效。