На всякий случай реплика для тех, кто старается не трогать руками все эти конфиг-файлы и вообще не очень поймет, о чем будет идти речь в статье: не волнуйтесь, чтобы работать с Alto CMS вовсе нет необходимости все это понимать, и ваши сайты на Альто прекрасно будут работать и без ковыряния с этими настройками.
А теперь подробности. Итак,если вы еще не в курсе, то самое время узнать, что мы постарались загрузку всех изображений (от аватар до фотосетов) реализовать через единый общий модуль Uploader (класс ModuleUploader). И, соответственно, все настройки, которые он использует, вынесены в конфигурации в секцию 'module.uploader'. И вот как выглядит секция конфигурации для загрузки файлов вообще:
$config['module']['uploader']['files']['default'] = array(
'file_maxsize' => '5Mb', // максимальный размер загружаемого файла
'file_extensions' => array( //расширения файлов, которые можно прикреплять к топикам
'zip','rar','gz','mp3',
'doc', 'docx', 'xls', 'xlsx', 'pdf','djv','djvu',
'gif', 'png', 'jpg', 'jpeg',
),
);
По-моему, тут все понятно по умолчанию — задается максимальный размер загружаемых файлов и допустимые расширения. А вот секция, которая описывает настройки по умолчанию для загружаемых изображений:$config['module']['uploader']['images']['default'] = array(
'$extends$' => '___module.uploader.files.default___',
'image_extensions' => array('gif', 'png', 'jpg', 'jpeg'),
'max_width' => 8000, // максимальная ширина загружаемых изображений в пикселях
'max_height' => 6000, // максимальная высота загружаемых изображений в пикселях
'url_maxsize' => '2Mb', // максимальный размер изображения в kB для загрузки по URL
// параметры сохранения при загрузке
'transform' => array(
'max_width' => 800, // максимальная ширина сохраняемого изображения
'max_height' => 600, // максимальная высота сохраняемого изображения
'bg_color' => '#ffffff', // цвет фона при преобразовании изображений
'watermark' => array(
'enable' => false, // нанесение "водяного знака" по умолчанию запрещено
'image' => array( // но его параметры заданы
'path' => '___path.static.dir___/___path.uploads.root___',
'file' => 'altocms.png',
'topleft' => false,
'position' => '0,0',
),
),
'@mime(jpeg)' => array(
'quality' => 80,
),
'@mime(gif)' => array(
'animation' => false,
),
'@mime(png)' => array(
//'save_as' => 'jpg',
),
),
);
В первую очередь обратите внимание на первую строку с ключом '$extends$' — она говорит о том, что содержимое этой секции есть расширение секции 'module.uploader.files.default'. Непонятно? Ок, скажу проще — берем все настройки для файлов по умолчанию (см. предыдущий кусок кода) и на них накатываем то, что у нас описано ниже. Т.е. максимальный размер файла и допустимые расширения у нас тут тоже будут учитываться, но к ним добавляем:- image_extensions — список расширений файлов, по которым мы считаем их картинками
- max_width и max_height — максимально допустимые размеры загружаемых изображений
- url_maxsize — максимальный размер изображений, загружаемых по URL
Важный нюанс — все эти параметры не являются обязательными. Например, если значения max_width и max_height в подсекции transform не заданы, то изображения будут сохраняться, как есть, без изменения размеров.
Особо стоит отметить ключи конфигурации вида '@mime(...)'. Полагаю, вы уже догадались, что это особые параметры, которые применяются только для изображений с определенными форматами. Для gif — это разрешение/запрещение анимации, для jpeg — задание уровня качества при сжатии, для png — возможность сохранить в формате jpeg.
Но это еще не все. У нас ведь есть разные категории изображений: аватары юзера и блога, фото юзера, фото в топике и в фотосете — это только те, что используются в стандартной комплектации движка. Но могут быть и другие, задаваемые сторонними плагинами. И для разных категорий могут быть разные требования к настройкам. И этот момент тоже учтен. Проще показать на примере:
// Аватары пользователя
$config['module']['uploader']['images']['profile_avatar'] = array(
'$extends$' => '___module.uploader.images.default___',
'transform' => array(
'max_width' => 250, // макс. ширина сохраняемой аватары
'max_height' => 250, // макс. высота сохраняемой аватары
'aspect_ratio' => '1', // соотношение ширины и высоты
'watermark' => array(
'enable' => false, // водяной знак запрещен
),
'@mime(gif)' => array(
'animation' => true, // gif анимация разрешена
),
),
);
// Фотография пользователя
$config['module']['uploader']['images']['profile_photo'] = array(
'$extends$' => '___module.uploader.images.default___',
'transform' => array(
'aspect_ratio' => '2:3', // соотношение ширины и высоты
'@mime(gif)' => array(
'animation' => false, // gif анимация запрещена
),
)
);
// Изображения, загружаемые в топик
$config['module']['uploader']['images']['topic'] = array(
'$extends$' => '___module.uploader.images.default___',
'transform' => array( // максимальные размеры не задаются, значит берутся из "расширяемой" секции
'watermark' => array(
'enable' => true, // водяной знак разрешен
),
),
);
Как видите, мы теперь можем задавать параметры для любой категории изображений.О том, как эти возможности могут использовать разработчики плагинов и о нескольких универсальных методах загрузки файлов/изображений, который значительно упрощают жизнь разработчикам, мы расскажем отдельно.
Имелась ввиду оптимизация изображений для использования на сайтах, например как в этих сервисах.
Пользователь загружает картинку в хорошем качестве, а функция дает возможность выводить «оптимизированное»(сжатое) изображение. При этом оригинал картинки, как вариант, доступен по прямой ссылке.
Наверное, я имею ввиду фактически такой же функционал, описанный в статье, только не для загрузки изображений, а для отрисовки уже загруженных.
В принципе, оно так и задумывалось, но, честно говоря, не проверял. Проверю.