2012-08-10 65 views
25

如何从指定目录显示图像?就像我想显示目录中的所有png图像一样,在我的情况下,我的目录是media/images/iconized。从指定目录中提取所有图像,然后显示它们

我试图环顾四周,但似乎没有一个符合我真正需要的东西。

但这是我的尝试。

$dirname = "media/images/iconized/"; 
$images = scandir($dirname); 
$ignore = Array(".", ".."); 
foreach($images as $curimg){ 
if(!in_array($curimg, $ignore)) { 
echo "<img src='media/images/iconized/$curimg' /><br>\n"; 
}; 
} 

希望这里有人可以提供帮助。我在任何想法,建议和建议中打开,谢谢。

+0

什么不适合您的尝试?您需要提供有关您遇到的问题的更多信息。 – webnoob 2012-08-10 14:10:54

回答

60

您还可以使用glob此:

$dirname = "media/images/iconized/"; 
$images = glob($dirname."*.png"); 

foreach($images as $image) { 
    echo '<img src="'.$image.'" /><br />'; 
} 
+0

如何多个图像扩展,而不是只有PNG的,我想要考虑JPEG或GIF或我想要的。 – 2012-08-10 14:27:35

+2

你可以这样写:glob(“{$ dirname} *。png,{$ dirname} *。jpeg,{$ dirname} * .. gif”) – 2012-08-13 03:07:38

+1

@MightyLucene您在评论中提出的建议无效。一种方法是:'$ images = glob($ dirname。“*。{jpg,gif,png}”,GLOB_BRACE);' 来自'glob'手册:GLOB_BRACE - 将{a,b,c}展开为匹配'a','b'或'c' – Segmentation 2016-11-09 22:04:05

13

您可以使用简单的PHP脚本文件夹显示所有图像。假设文件夹名称为“images”,并在这个文件夹中放置了一些图片,那么你就是一个编辑器并粘贴这段代码并运行这个脚本。 这是PHP代码

<?php 
    $files = glob("images/*.*"); 
    for ($i=0; $i<count($files); $i++) 
     { 
     $image = $files[$i]; 
     $supported_file = array(
       'gif', 
       'jpg', 
       'jpeg', 
       'png' 
     ); 

     $ext = strtolower(pathinfo($image, PATHINFO_EXTENSION)); 
     if (in_array($ext, $supported_file)) { 
      echo basename($image)."<br />"; // show only image name if you want to show full path then use this code // echo $image."<br />"; 
      echo '<img src="'.$image .'" alt="Random image" />'."<br /><br />"; 
      } else { 
       continue; 
      } 
      } 
     ?> 

如果你不检查,然后图像类型使用此代码

<?php 
$files = glob("images/*.*"); 
for ($i = 0; $i < count($files); $i++) { 
    $image = $files[$i]; 
    echo basename($image) . "<br />"; // show only image name if you want to show full path then use this code // echo $image."<br />"; 
    echo '<img src="' . $image . '" alt="Random image" />' . "<br /><br />"; 

} 
?> 
+0

我相信这段代码假设图像文件夹中的每个文件实际上都是一个图像。如果文本文件出现错误,那么它也会显示。 – 2013-10-07 05:59:34

+1

为什么在for循环中从1开始?是不是第一个被遗忘的文件呢? – Lobato 2015-07-24 16:23:07

+0

我只是使用循环,所以我可以从0或1开始,我也使用计数(数组),所以循环继续从文件夹中的所有图像 – 2015-07-25 08:50:40

3

您需要从for ($i=1; $i<count($files); $i++)循环更改为for ($i=0; $i<count($files); $i++)

所以正确的代码

<?php 
$files = glob("images/*.*"); 

for ($i=0; $i<count($files); $i++) { 
    $image = $files[$i]; 
    print $image ."<br />"; 
    echo '<img src="'.$image .'" alt="Random image" />'."<br /><br />"; 
} 

?> 
2

如果有的话ne正在寻找递归。

<?php 

echo scanDirectoryImages("images"); 

/** 
* Recursively search through directory for images and display them 
* 
* @param array $exts 
* @param string $directory 
* @return string 
*/ 
function scanDirectoryImages($directory, array $exts = array('jpeg', 'jpg', 'gif', 'png')) 
{ 
    if (substr($directory, -1) == '/') { 
     $directory = substr($directory, 0, -1); 
    } 
    $html = ''; 
    if (
     is_readable($directory) 
     && (file_exists($directory) || is_dir($directory)) 
    ) { 
     $directoryList = opendir($directory); 
     while($file = readdir($directoryList)) { 
      if ($file != '.' && $file != '..') { 
       $path = $directory . '/' . $file; 
       if (is_readable($path)) { 
        if (is_dir($path)) { 
         return scanDirectoryImages($path, $exts); 
        } 
        if (
         is_file($path) 
         && in_array(end(explode('.', end(explode('/', $path)))), $exts) 
        ) { 
         $html .= '<a href="' . $path . '"><img src="' . $path 
          . '" style="max-height:100px;max-width:100px" /></a>'; 
        } 
       } 
      } 
     } 
     closedir($directoryList); 
    } 
    return $html; 
} 
+0

严格标准:只有变量应通过引用传递。 :&& in_array(end(explode('。',end(explode('/',$ path)))),$ exts)部分。 – Lobato 2015-07-24 16:19:45

-1

严格的标准:只有变量应该通过引用/home/aadarshi/public_html/----------/upload/view.php被传递线32

代码是:

<?php 

echo scanDirectoryImages("uploads"); 

/** 
* Recursively search through directory for images and display them 
* 
* @param array $exts 
* @param string $directory 
* @return string 
*/ 
function scanDirectoryImages($directory, array $exts = array('jpeg', 'jpg', 'gif', 'png')) 
{ 
if (substr($directory, -1) == '/') { 
    $directory = substr($directory, 0, -1); 
} 
$html = ''; 
if (
    is_readable($directory) 
    && (file_exists($directory) || is_dir($directory)) 
) { 
    $directoryList = opendir($directory); 
    while($file = readdir($directoryList)) { 
     if ($file != '.' && $file != '..') { 
      $path = $directory . '/' . $file; 
      if (is_readable($path)) { 
       if (is_dir($path)) { 
        return scanDirectoryImages($path, $exts); 
       } 
       if (
        is_file($path) 
        && in_array(end(explode('.', end(explode('/', $path)))), $exts) 
       ) { 
        $html .= '<a href="' . $path . '"><img src="' . $path 
         . '" style="max-height:100px;max-width:100px" /> </a>'; 
       } 
      } 
     } 
    } 
    closedir($directoryList); 
} 
return $html; 
} 
+0

您应该为您的答案添加更多解释,否则可能会被删除。请修复您的格式。 – user1438038 2015-11-17 08:51:27

+0

你能解释一下你在代码中改变了什么,所以它不会给错误? – KondukterCRO 2016-09-22 13:21:30

相关问题