Вывести изображения из определённой папки (директории)
Скрипт для вывода всех изображений (с проверкой, что это именно картинки) из директории.
Несколько примеров, первый использовал.
$wimage = "";
$fimg = "";
$path = "images/"; // задаем путь до сканируемой папки с изображениями
$images = scandir($path); // сканируем папку
if ($images !== false) { // если нет ошибок при сканировании
$images = preg_grep("/\.(?:png|gif|jpe?g)$/i", $images); // через регулярку создаем массив только изображений
if (is_array($images)) { // если изображения найдены
foreach($images as $image) { // делаем проход по массиву
$fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";
}
$wimage .= $fimg;
} else { // иначе, если нет изображений
$wimage .= "<div style='text-align:center'>Не обнаружено изображений в директории!</div>\n";
}
} else { // иначе, если директория пуста или произошла ошибка
$wimage .= "<div style='text-align:center'>Директория пуста или произошла ошибка при сканировании.</div>";
}
echo $wimage; // выводим полученный результат
Можно короче, используя функцию glob(), так же с проверкой на расширения:
$all_files = glob("mytheme/images/myimages/*.*");
for ($i=0; $i<count($all_files); $i++)
{
$image_name = $all_files[$i];
$supported_format = array('gif','jpg','jpeg','png');
$ext = strtolower(pathinfo($image_name, PATHINFO_EXTENSION));
if (in_array($ext, $supported_format))
{
echo '<img src="'.$image_name .'" alt="'.$image_name.'" />'."<br /><br />";
} else {
continue;
}
}
Если в папке изображения ТОЛЬКО с определённым расширением, то можно сократить:
$images = glob("*.jpg"); // файл скрипта находится в той же папке, что и картинки
foreach($images as $image) {
echo '<h3>' . basename($image, ".jpg") . '</h3>';
echo '<img src="' . dirname($_SERVER["SCRIPT_NAME"]) . '/' . $image . '" />';
}
Это не использовался.
<?php
$directory = "./images"; // Папка с изображениями
$allowed_types=array("jpg", "png", "gif"); //разрешеные типы изображений
$file_parts = array();
$ext="";
$title="";
$i=0;
//пробуем открыть папку
$dir_handle = @opendir($directory) or die("Ошибка при открытии папки !!!");
while ($file = readdir($dir_handle)) //поиск по файлам
{
if($file=="." || $file == "..") continue; //пропустить ссылки на другие папки
$file_parts = explode(".",$file); //разделить имя файла и поместить его в массив
$ext = strtolower(array_pop($file_parts)); //последний элеменет - это расширение
if(in_array($ext,$allowed_types))
{
echo '<div class = "blok_img" >
<img src="'.$directory.'/'.$file.'" class="pimg" title="'.$file.'" />
</div>';
$i++;
}
}
closedir($dir_handle); //закрыть папку
?>
Ссылки и благодарности
Смотрел тут:
- https://www.meweb.ru/articles.php?article_id=71
- http://qaru.site/questions/147774/get-all-the-images-from-a-folder-in-php/865354#865354
- https://ru.stackoverflow.com/questions/446853