2012-08-10 58 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

相關問題