Офис НП AMWAY в Ярославле
Купить продукцию Амвей в Ярославле
На карте Купить AMWAY в ЯрославлеПриобрести высококачественную продукцию Амвей в Ярославле, получить консультации по бизнесу, заказать продукцию или получить заказ:
Адрес: улица Валентины Терешковой, дом 1 (Вход со двора)
Телефон: +7 (920) 112-00-91
Email: matyxho@mail.ru
Сайт: https://www.amway.ru/user/lebedem
Визитка: http://yar.meweb.ru
Иерархия статей
Статьи » Программирование » PHP: Вывод изображений из папки (директории)
Сниппет
При создании одного из плагинов понадобилось мне показать все изображения из указанной папки (директории). Признаться, раньше я не работал с подобным, но все новое всегда вызывает азарт. Поэтому, чуть погуглив и покурив мануалы, я набросал несколько строк кода, коими и поделюсь с вами.
PHP: Вывод изображений из папки (директории)
Опубликовал  Pisatel Добавлено  06-04-2015 15:36 06 Апрель 2015 15:36:11 10134  Прочтений 10134 Прочтений  9 Комментариев 9 Комментариев
Обновлено: 06-04-2015 16:00 Обновлено: 06 апреля 2015 16:00:17  printer
В данной статье приведу небольшой скрипт, который ищет изображения в указанной папке (директории) и выводит их. Для начала — вывод всех изображений из папки (как всегда- комментарии прямо в коде):

Код: PHP


$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; // выводим полученный результат




Однако, задачи бывают разные. Попробую привести несколько примеров. Например, нам необходимо вывести не все изображения, а только первые 10. Для этого нужно будет лишь задать дополнительное условие при проходе по массиву. Итак, код с комментариями:

Код: PHP
    $stop = 9; // на 1 меньше, так как ключи в массиве начинаются с 0, то есть

// 0, 1, 2..., значит первые 10 значений закончатся на ключе 9

foreach($images as $key => $image) { // делаем проход по массиву, выбирая ключ => значение

$fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";

if ($stop == $key) break; // останавливаем проход по массиву, когда 9==9

}




Следующий пример — выберем, например, каждое второе изображение:

Код: PHP
    foreach($images as $key => $image) { // делаем проход по массиву, выбирая ключ => значение

if ($key % 2 == 0) { // если целочисленный остаток от деления ключа на 2 равен 0

$fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";

} else { // иначе

continue; // пропускаем изображение

}

}




Ну и на закуску — выберем 5 случайных (рандомных) изображений из папки (каталога). Для этого я воспользуюсь php–функцией array_rand();, и код придется чуть усложнить, увеличив буквально на пару строк:

Код: PHP
    $arand = array_rand($images, 5); // получили массив 5 случайных ключей (ключ массива => ключ изображения)

$i = 0;

foreach($images as $key => $image) { // проход по массиву

if ($arand[$i] == $key) {

// если значение случайного ключа равно текущему ключу- выводим изображение

$fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";

} else { // иначе

continue; // пропускаем

}

$i++;

}




Если кто–то сможет сделать это более изящно — милости прошу. Я лично всегда стараюсь использовать для работы с массивами функции, которые специально предназначены для работы с ними и не изобретать велосипедов.

На этом, в общем, и закончу. Удачи в кодинге и процветания твоему проекту!
Понравилась статья?
Метки для данной статьи
Похожие статьи
Поделиться:   
Комментарии
#1 | Сігморд 13 августа 2017 17:05:13
No Avatar
Гость
Здуріти як сьо файно.
Тіко я не тямлю ніц, у тому шо треба зробити, у фІнальному слові.
Скажіть, що треба, чи є таке, що виводити з певної папки на монітор одне зображення? В день. Чи в час?
#2 | Pisatel 14 августа 2017 13:50:18
Avatar
Отсутствует
Супер Администратор
Активный
С 03. февраля 2013
Сігморд, не понял вопрос. Гугл-переводчик тоже не помог)) Можно по-русски?
Я не европеец. И не азиат. Я русский. Я россиянин. Я за истинные семейные христианские ценности. И это - моя национальная идея.
#3 | Евгений 14 сентября 2017 23:26:25
No Avatar
Гость
Здравствуйте, подскажите новичку. Когда нам нужно вывести 5 случайных изображений, то приведенный вами код вставляется вместо 14 и 15 строчки кода (foreach($images as $image) { // делаем проход по массиву)?
#4 | Pisatel 27 сентября 2017 20:12:21
Avatar
Отсутствует
Супер Администратор
Активный
С 03. февраля 2013
Доброго времени суток! Так попробуйте
Код
    $wimage = "";
    $fimg = "";
    $path = "images/"; // задаем путь до сканируемой папки с изображениями
    $images = scandir($path); // сканируем папку
        if ($images !== false) { // если нет ошибок при сканировании
    $images = preg_grep("/\.(?:png|gif|jpe?g)$/i", $images); // через регулярку создаем массив только изображений
        if (is_array($images)) { // если изображения найдены
    $arand = array_rand($images, 5); // получили массив 5 случайных ключей (ключ массива => ключ изображения)
    $i = 0;
            foreach($images as $key => $image) { // проход по массиву
        if ($arand[$i] == $key) {
 // если значение случайного ключа равно текущему ключу- выводим изображение
    $fimg .= "<img src='".$path.htmlspecialchars(urlencode($image))."' alt='".$image."' />";
        } else { // иначе
    continue; // пропускаем
   }
    $i++;
}
    $wimage .= $fimg;
        } else { // иначе, если нет изображений
    $wimage .= "<div style='text-align:center'>Не обнаружено изображений в директории!</div>\n";
    }
        } else { // иначе, если директория пуста или произошла ошибка
        $wimage .= "<div style='text-align:center'>Директория пуста или произошла ошибка при сканировании.</div>";
}
    echo $wimage; // выводим полученный результат

Я не европеец. И не азиат. Я русский. Я россиянин. Я за истинные семейные христианские ценности. И это - моя национальная идея.
#5 | user 08 марта 2018 11:30:36
No Avatar
Гость
Заработало с первого раза. Хотел было только 1 изображение вывести, но минимум - 2.
Сенкс!
#6 | Вадим 19 апреля 2018 19:38:26
No Avatar
Гость
Pisatel, подскажите, пожалуйста, какой добавить код, чтобы скрипт не трогал картинку внутри папки с именем photo1.jpg? То есть чтобы все картинки проверялись и выводились, а photo1.jpg была исключением и не выводилась. Спасибо.
#7 | Pisatel 19 апреля 2018 19:55:24
Avatar
Отсутствует
Супер Администратор
Активный
С 03. февраля 2013
Эх, давно не был тут)) Вадим, ответил на почту. user, та не за что))
Я не европеец. И не азиат. Я русский. Я россиянин. Я за истинные семейные христианские ценности. И это - моя национальная идея.
#8 | Артур 02 июля 2018 17:22:52
No Avatar
Гость
Здравствуйте. А можно сделать так, чтобы на сайте выводились изображения по нажатию кнопки? Я так понимаю в вашем примере изображения случайным образом генерируются на странице при переходе на нее
#9 | Владимр 28 августа 2018 19:42:48
No Avatar
Гость
Добрый День!
могли бы подсказать как написать код, что из папки выводило не все картинки а по одной и что бы можно было задать этот интервал в минутах например?
Добавить комментарий
Имя:

Проверочный код:
Последние активные темы форума
  Темы Просмотров Ответов Последние сообщения
folder Вопрос по переделке bb-кода
PHP, MySQL
2136 5 Pisatel
26. мая 2017
folder Вопросы по Ajax форме обратной связи
CMS PHP Fusion
9506 48 Ditrin
19. февраля 2017
folder BBCode YouTube Video Colorbox mod
CMS PHP Fusion
6821 2 Pisatel
10. декабря 2016
folder Как лучше создать собственную страницу?
CMS PHP Fusion
5436 17 Pisatel
11. мая 2016
folder Небольшие вопросы по скриптам магазина и катало...
PHP, MySQL
45409 80 Pisatel
11. января 2016
folder BBCode Code mod
CMS PHP Fusion
3319 0 Pisatel
31. августа 2015
folder Ajax Like Dislike Article Panel
CMS PHP Fusion
6673 16 Pisatel
07. июля 2015
folder Хлебные крошки / BreadCrumbs SEO Panel
CMS PHP Fusion
7323 17 Pisatel
04. июля 2015
folder Abbr Description BBCode
CMS PHP Fusion
2469 0 Pisatel
15. июня 2015
folder Плагин Email рассылки Mail To All by Pisatel
CMS PHP Fusion
10320 32 Pisatel
26. апреля 2015
folder Подозрительный трафик и прочие страшилки
Всякая хрень
4513 2 Ditrin
23. апреля 2015
folder Мод Newsletter - рассылка писем пользователям с...
CMS PHP Fusion
6276 13 Pisatel
10. апреля 2015
folder Мод отправки писем PHPMailer для PHP-Fusion
CMS PHP Fusion
32945 113 Ditrin
06. апреля 2015
folder Появление неизвестного файла subscriptions.php
CMS PHP Fusion
3135 2 Pisatel
06. апреля 2015
folder Autoban on IP
CMS PHP Fusion
12170 13 Pisatel
03. апреля 2015