Офис НП AMWAY в Ярославле
Купить продукцию Амвей в Ярославле, офис 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 8845  Прочтений 8845 Прочтений  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 | Georggab 29 апреля 2018 11:24:01
No Avatar
Гость
В случае, когда у клиента появилась необходимость приобретения песка или щебня и его доставки http://www.gravel-sand.ru к строительному объекту, наша компания окажет эти услуги по вполне разумной цене. Поскольку, несомненно, при выборе поставщика нерудных материалов главным из того, на что обращает внимание покупатель, является именно стоимость услуг. Ответственный подход к выполнению работы позволяет гарантировать, что заказанные материалы окажутся на вашем строительном объекте вовремя. Более подробную информацию об условиях сотрудничества можно получить, позвонив в отдел продаж компании.
c.radikal.ru/c28/1804/08/26d530685566.jpg
#9 | Артур 02 июля 2018 17:22:52
No Avatar
Гость
Здравствуйте. А можно сделать так, чтобы на сайте выводились изображения по нажатию кнопки? Я так понимаю в вашем примере изображения случайным образом генерируются на странице при переходе на нее
Добавить комментарий
Имя:

Проверочный код:
Последние активные темы форума
  Темы Просмотров Ответов Последние сообщения
folder Вопрос по переделке bb-кода
PHP, MySQL
1563 5 Pisatel
26. мая 2017
folder Вопросы по Ajax форме обратной связи
CMS PHP Fusion
7454 48 Ditrin
19. февраля 2017
folder BBCode YouTube Video Colorbox mod
CMS PHP Fusion
6466 2 Pisatel
10. декабря 2016
folder Как лучше создать собственную страницу?
CMS PHP Fusion
4584 17 Pisatel
11. мая 2016
folder Небольшие вопросы по скриптам магазина и катало...
PHP, MySQL
41715 80 Pisatel
11. января 2016
folder BBCode Code mod
CMS PHP Fusion
3072 0 Pisatel
31. августа 2015
folder Ajax Like Dislike Article Panel
CMS PHP Fusion
5883 16 Pisatel
07. июля 2015
folder Хлебные крошки / BreadCrumbs SEO Panel
CMS PHP Fusion
6493 17 Pisatel
04. июля 2015
folder Abbr Description BBCode
CMS PHP Fusion
2290 0 Pisatel
15. июня 2015
folder Плагин Email рассылки Mail To All by Pisatel
CMS PHP Fusion
9151 32 Pisatel
26. апреля 2015
folder Подозрительный трафик и прочие страшилки
Всякая хрень
3942 2 Ditrin
23. апреля 2015
folder Мод Newsletter - рассылка писем пользователям с...
CMS PHP Fusion
5626 13 Pisatel
10. апреля 2015
folder Мод отправки писем PHPMailer для PHP-Fusion
CMS PHP Fusion
28353 113 Ditrin
06. апреля 2015
folder Появление неизвестного файла subscriptions.php
CMS PHP Fusion
2784 2 Pisatel
06. апреля 2015
folder Autoban on IP
CMS PHP Fusion
11397 13 Pisatel
03. апреля 2015