Компонент для MaxSite CMS, создающий в header коллаж из изображений
Компонент для MaxSite CMS, создающий в header коллаж из изображений
Для плагина Taggallery задумал вывод n изображений (случайных, лучших, ... ) в шапке сайта. Их нужно не просто вывести, а сделать из них коллаж.
В процессе знакомства с графическими функциями библиотеки php gd2 получился функционал, осуществляющий коллаж из изображений в заданной папке. Результат можете наблюдать в шапке этого блога. Плагин Taggallery пока непричем.
Все что получилось, оформил в виде компонента header_collage.
Что такое компоненты для MaxSite CMS вы можете почитать здеся: http://maxsite.org/page/components-default-template.
В архиве находится файл header_collage.php, который нужно разместить в каталоге components шаблона.
Если ваш шаблон не поддерживает компоненты (а зря) - можно просто подключить этот файл где нужно.
Кроме того, в архиве каталог header_collage, в котором демо-картинки.
Этот каталог нужно разместить в каталоге uploads/, не забыв при этом выставить права на каталог 777 (если загружаете картинки не встроенным загрузчиком, а по ftp или через панель хостинга).
Состав изображений uploads/header_collage/
Служебные изображения:
ramka.png - рамка.
header.jpg - основа шапки (на которую накладываются).
result.jpg - результат коллажа.
Все остальные изображения *.jpg и *.jpeg , если они не начинаются на "_", участвуют в коллаже.
Скрипт берет n случайных изображений, накладывает их на рамку, поворачивает и распределяет по изображению-основанию.
Настройки коллажа.
В самом начале файла компонента все настройки:
- $par['source_dir'] = 'header_collage'; // директорий в uploads, где исходные картинки;
- $par['width'] = 150; // ширина элемента коллажа;
- $par['height'] = 113; // высота элемента коллажа;
- $par['pointx'] = 40; // начальная точка вывода элементов;
- $par['pointy'] = 30; // где будут выведены элементы по высоте;
- $par['angle'] = array(20,-15,25,10,20,-10,15,25,-15); // углы на которые будут повернуты элементы;
- $par['borderx'] = 6; // бордюр рамки за изображением по x;
- $par['bordery'] = 8; // бордюр рамки за изображением по y;
- $par['stepx'] = 150; // шаг вывода элементов;
- $par['count'] = 5; // кол-во элементов;
- $Cache_key=’’; - ключ Кеша: указать чтобы новая шапка строилась только после сброса кеша.
После настройки коллажа нужно указать значение ключа Кеша, например header_collage.
Обращаю внимание, что не рамка накладывается на изображение, а наоборот: сперва рамка уменьшается в заданные размеры, а затем картинка делается меньше рамки на бордюр.
(Кому-то может быть удобнее будет наоборот.)
Может скажете: массив углов лучше генерировать случайно - не спорю, но не всегда красиво получится.
Следующее возможное замечание: нужно делать каждое повернутое изображение в рамке png картинкой и выводить сверху основы средствами html, делая кликкабельными со ссылкой на оригинал изображения – согласен и буду благодарен, если кто-то подскажет как это реализовать(мой мозг неспособен понять поведение div-ов).
Еще где-то читал, что можно делать хитрые изображения-карты с участками-ссылками – но . . . чего только не бывает.
Функции компонента.
Функции компонента задаются прямо в файле компонента, что не совсем верно - зачем их погружать, если вычисления не проводятся. Вычисление, ведь, проводятся единожды после сброса кеша.
Приведу пояснения по функциям - вдруг кто-то захочет их модифицировать.
function rotate_img_collage
Показать...Эта функция получает такие параметры:
$ramka - ресурс рамки;
$img - ресурс накладываемого изображения;
$angle - угол поворота;
$width - ширина !до поворота;
$height - высота !до поворота;
$borderx - зазор между рамкой и изображением по x;
$bordery - зазор - по y;
Результатом функции - ресурс наложенного на рамку и повернутого изображения.
header_collage
Показать...Функция получает:
$array_fn_img - массив полных путей к файлам картинок
$fn_ramka - полный путь к файлу рамки;
$fn_header - полный путь к файлу основы;
$fn_result - полный путь к тому, куда будет результат;
$width - ширина элемента с рамкой;
$height - высота элемента с рамкой;
$borderx - бордюр по x;
$bordery - бордюр по y;
$pointx - начальная точка x;
$pointy - начальная точка y;
$angle - массив углов поворота;
$stepx - шаг выводаизображений;
Функция последовательно берет из массива картинку, угол; накладывает на рамку, поворачивает, отступает на шаг от НАЧАЛА предыдущего и накладывает на основу.
Результат действия будет в файле с именем в переменной $fn_result.
Что надо бы улучшить.
1. Хотелось бы социальные кнопки вывести поверх шапки в левом верхнем углу, как в компоненте logo-inks.
2. Не знаю: стоит ли делать опции компонента в админке - влом.
3. Наклоненные в рамках изображения полноразмерные картинкиповерх шапки-основы лучше вывести средствами html, чтобы ссылки с них были lightbox, или вели на страницы картинки, формируемые плагином Taggallery.
Выводим картинки в div-ах: одна поверх другой, с эффектами, в компоненте для MaxSite CMS

Продолжим на примере создания компонента для MaxSite CMS изучать CSS. Сейчас ...
Компонент taggallery-collage для галереи изображений на MaxSite CMS.
Скачать: taggallery_header.zip Созданные, как описано в статье: Создание коллажа ...
Компонент для MaxSite CMS, выводящий последние комменты и твиты в футер.

Скачать: footer-twcomm.zip Сделал эту наработку давно. Поделиться же решил только ...
Создание коллажа изображений в галерее изображений Taggallery на MaxSite CMS.

Логическое завершение серии компонентов: picture-links и header_collage. В админке ...
Модернизация плагина Модули для MaxSite.
Плагин «Модули» входит в стандартный набор поставки MaxSite и его описание ...













Оригинально.
прикольно