MODX плагин автоматического сжатия изображения при загрузке

MODX сжатие изображений при загрузке MODX Revo
В этом уроке расскажу вам, как создать плагин для MODX, который будет автоматически сжимать изображения при загрузке на сервер. Это может быть полезно для оптимизации скорости загрузки сайта и экономии места на диске.

Часто контент-менеджеры жа и сами разработчики загружают огромные изображения с тех же фотостоков, превышающие размер контентной части в несколько раз. Например: ширина контента 1190 px, а менеджер загружает изображение 4000×3000 px. Это приводит к увеличению веса страницы и замедлению загрузки сайта. Кроме того на сервере быстрее заканчивается место.

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

Создание плагина авто сжатия изображений при загрузке в MODX

Чтобы создать плагин, в дереве ресурсов перейдите в раздел и на против пункта плагины, нажмите на плюс. Откроется страница создания нового плагина. Заполняем следующими данными:

Название: ImageUploadCompressor

Код:

<?php
$fullPath = $source->getBases()['pathAbsolute'] . $directory;
foreach ($files as $file) {

if (strripos($file['type'], 'image') === false || $file['type'] == 'image/svg+xml') {
return;
}

$name = $file['name'];
$pathToImage = $fullPath . $name;

if (exif_imagetype($pathToImage) == IMAGETYPE_JPEG) {

$params = array(
'w' => 1190,
'f' => 'jpeg',
'q' => 77,
);

} elseif (exif_imagetype($pathToImage) == IMAGETYPE_PNG) {

$params = array(
'w' => 1190,
'f' => 'png',
'q' => 77,
);

} elseif (exif_imagetype($pathToImage) == IMAGETYPE_GIF) {
return;
}

$phpThumb = $modx->getService('modphpthumb', 'modPhpThumb', MODX_CORE_PATH . 'model/phpthumb/', array());
$phpThumb->setSourceFilename($pathToImage);

foreach ($params as $k => $v) {
$phpThumb->setParameter($k, $v);
}

if ($phpThumb->GenerateThumbnail()) {
if (!$phpThumb->renderToFile($pathToImage)) {
$modx->log(1, 'Ошибка сохранения изображения в [' . $pathToImage . ']');
}
} else {
$modx->log(1, print_r($phpThumb->debugmessages, 1));
}

}

Далее переходим во вкладку События, находим там «OnFileManagerUpload» ставим на против него галку, и выставляем приоритет «-1» (или «0»). Сохраняем плагин.

OnFileManagerUpload — это системное событие MODX, которое срабатывает при загрузке файла через файловый менеджер.

В массив $params можно передавать и другие параметры библиотеки phpThumb, например, водяной знак и т.п..

В дополнение см. статью о работе phpThumb вне MODX Revo.

Источник
Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( 1 оценка, среднее 5 из 5 )
Web-Revenue.ru
Добавить комментарий