Регистрация    Вход    Форум    Поиск    FAQ

  •  Новости
  • Beeline + Twitter = чирикай через SMS!

    Beeline + Twitter = чирикай через SMS! На первой картинке обозначены команды, при помощи которых через SMS Вы сможете кого-либо зафолловить или же отписаться, ретвитнуть чей-либо пост или же написать личное сообщение.

    Open Graph Protocol. От создателей Facebook

    Open Graph Protocol. От создателей Facebook Разбираясь с Facebook API, случайно наткнулся на другую интересную разработку от этих людей.

    Глобальное ускорение Wordpress

    Глобальное ускорение Wordpress Не считая очевидных решений типа отключения некоторых плагинов и перехода на тему попроще, я вижу 2 пути для оптимизации: кэширование и сжатие траффика.




  •  Часы


  •  Поиск

Optimaze » Программирование » Как вывести случайную фотографию из папки на PHP?




Как вывести случайную фотографию из папки на PHP?



    Доброго времени суток! По просьбе одно моего хорошего знакомого, выкладываю пару набросков по тому, как достать случайную фотографию из папки на сайт.

    На самом деле я в глаза не видел ситуации, но попытаюсь вкратце описать и составить небольшое задание (кстати уже почти выливается в традицию делать такие блоки):

     

    Задача: существует директория с фотографиями расширения *. jpg, *. gif, *. png, нет никакой таблицы в базе данных для хранения путей к фотографиям и есть место на сайте, где нужно вывести эту “случайную фотографию”.

    Во первых нам потребуется – создать директорию, под любым названием и положить туда несколько картинок или же фотографий. Кстати, тут есть один важный момент – расширение, с которым будут показываться “случайные фото“, но об этом далее, сначала функция!

     

    • <?
    • function randomImage($path = 'images/de') {
    •     //если директория не существует
    •     if (!opendir($path)) {
    •         return 'Ошибка! Вы указали неверную директорию!';
    •     }
    •     //иначе
    •     else {
    •         //открываем папку
    •         $dir = opendir($path);
    •         //читаем содержимое
    •         while(($img = readdir($dir)) !== false) {
    •             //определяем расширение файлов
    •             $res = substr(strrchr($img,'. '), 1);
    •             //если расширение *. gif, *. jpg, *. png и файл существует
    •             if (is_file($img) && ($res == 'gif') || ($res == 'jpg') || ($res == 'png')) {
    •                 //записываем файлы в массим $imgname[]
    •                 $imgname[] = $path. '/'. $img;
    •             }
    •         }
    •     //закрываем директорию
    •     closedir($dir);
    •     //считаем количество файлов
    •     $i = rand(0, count($imgname)-1);
    •     //записываем вывод изображения в переменную $result
    •     $result = '<img src="'. $imgname[$i]. '">';
    •     return $result;
    •     }
    • }
    • //выводим функцию в нужном месте
    • print randomImage();
    • ?>

    Что я здесь написал такое и что сделать, чтобы это работало у вас? Для начала нам надо будет вставить функцию целиком в какой-нибудь основной класс сайта (если таковой имеется) или же просто в файл с функциями. Дальше нужно вывести функцию в нужно месте сайта <?print randomImage($dir)?>, где $dir – это ваша директория, или <?print $someclass->randomImage($dir)?>, если вы работаете с классами.

     

    После вывода в нужном месте, происходит следующее: функция читает папку, если таковой нет – ошибка, если есть, то читает все лежащие внутри файлы. Если эти файлы существуют и они с расширением *. jpg, *. png или же *. gif, то складывает их названия и пути к ним в массив, после чего методом случайных значений по индексу элемента в массиве выводится фотография.

     

    Важно! Как раз то важное о разрешении (формате). В таком виде функции нужно указывать путь к превью фотографий, иначе фото выводится в полном размере, а если у вас блок для вывода маленький, а фото 1600х1200, то понимаете что будет. Если указать вручную размеры фото в <img src=”" width=”"… , то фото будет выводится маленьким, а загружаться полностью. То есть увидели на странице фото 150х100, а фактически загрузили 1600х1200 размером 5 Мб. Так что будут проблемы с загрузкой страницы.



    Рейтинг: 4.5/5, основан на 25 голосах.


    Нравится



    Вернутся назад


       

    Вам будет интересно:

    Создание нестандартных настроек WP-темы

    Объясню, в частности, как организовать загрузку файла юзера, с последующим использованием его в теме.

    Маршрутизация на сайте средствами PHP

    Когда то я сам пользовался обычной switch-case маршрутизацией и думал, что это удобно (на самом деле даже такая маршрутизация куда лучше, чем ее отсутствие).

    Android - Работа с базой данных (часть 2)

    В последний раз мы прошли такую себе мини-лекцию по базам. Сегодня время пришло заняться практикой.

    Alpha версия Jackpot доступна

    Разработчики проекта Jackpot заявили о доступности ранней версии своего детища.



    •  Публикации


    8 методов раскрутки своего форума с нуля

    8 методов раскрутки своего форума с нуля Итак, у вас имеется свой собственный форум, но его никто не посещает? Мы готовы помочь вам справиться с этой нелегкой проблемой.

    Как привлекать посетителей на проект

    Как привлекать посетителей на проект Данная статья в основном рассчитана на тех, кто самостоятельно занимается продвижением своего проекта.

    Про MySQL, серверы и PayPal

    Про MySQL, серверы и PayPal Проклял все настройки кодировок, проклял DirectAdmin и еле-еле нашел то место где располагается и задается общий пароль для ...

    Реклама в Твиттере. Как подать свой продукт

    Реклама в Твиттере. Как подать свой продукт Твиттер уже давно стал из нового web 2. 0 сервиса рекламной площадкой с огромным количеством потенциальных пользователей ...

    Пока блог на локалхосте

    Пока блог на локалхосте Самое время кратко описать, чем нам придется заниматься. Прежде всего нужно понять, что блог ты будешь делать для получения ...

    Авторитет блоггера притягивает

    Авторитет блоггера притягивает Долго не знал с чего начать данную статью. Статья что-то типа мыслей вслух и философии.