Мой сайт

Сайт обо всем по порядку

WpFatFree. Медиабиблиотека.


Вариантов работы с рисунками на сайте много. И, наверное, ни один из них не будет идеальным. Ту же библиотеку Вордпресс не ругает разве что ленивый.  У меня все это организовано таким образом. Все картинки делятся на две категории. Миниатюры и обычные картинки. Разница между ними в том, что изображение миниатюры может использоваться в нескольких местах.

В виджетах, в индексной странице блога, поэтому при загрузке автоматически создаются две дополнительные копии меньшего размера. При выборе загрузки рисунка копии не создаются. Загружается "как есть". Со своими оригинальными размерами. Использовать его в качестве миниатюры в записи или странице может стать проблемой. А в виджетах на главной странице он просто не выведется. Так что тут все аккуратно надо продумать.

А думать много не придётся. Одну картинку на миниатюру, остальные на рисунки. Поэтому принцип работы с библиотекой следующий. К каждому посту или странице создаем картинку размером 600 х 360 px. Она и будет использована в качестве миниатюры.

   

Если посмотреть в контроллере, то вот здесь функцией imageResize() создаются две копии этого файла.

public function imageResize($img_name){
        $path = 'uploads/' . $img_name;
        $img = new \Image($path); // relative to UI search path
        $path_m = 'uploads/thrumb_m/' . $img_name;
        $path_s = 'uploads/thrumb_s/' . $img_name;
        $img->resize(300);
        $this->f3->write($path_m, $img->dump('jpeg'));
        $img->resize(100);
        $this->f3->write($path_s, $img->dump('jpeg'));
    }

Размеры, как видно из кода устанавливаются данной шириной, высота автоматом.

       

$img->resize(300);
$img->resize(100);

Если вас не устраивают такие размеры, то все это легко можно менять. Естественно, могут возникнуть проблемы при выводе уменьшенных копий. К примеру, здесь.

   
 А может и нет. И если подвести итог, то мы получаем примерно следующие размеры картинок:

  •  600 х 360px
  •  300 x 180px
  •  100 x 60 px

С рисунком все проще. Он добавляется один как есть. И используется для вставки в тело поста или страницы. Рисунки, загруженные через библиотеку, добавляются в базу данных. Для них можно добавить тег alt и title. Но я не реализовал в выводе добавление этих тегов. Так что эта функция "на будущее".

   
Так же они отображаются в библиотеке. Миниатюра отображается с белой рамкой по краям. Так же можно посмотреть краткую информацию о рисунке.

   
 
В общем то, реализация библиотеки вполне достойная. Просто и со вкусом. Естественно, когда рисунков станет много, придется сделать либо пагинацию, либо ленивую загрузку рисунков. Но пока рисунков мало, все работает и так. И несколько замороченная загрузка рисунков даже немного дисциплинирует.