ms2gallery Ресайз исходных изображений на сервере
Всем привет. Публикую «велосипед» по ресайзу исходных изображений на сервере в момент загрузки (без участия plupload, который имеет всякие недостатки).
Этот код валиден для версии ms2gallery 1.3.3-pl, сейчас версия 1.5.0 — и там похоже здорово рефакторили код.
Код для ресайза можно найти по ссылке:
gist.github.com/soulcreate/c45dbb700bfd3ded0e5b
вставляем в процессор core/components/ms2gallery/processors/mgr/gallery/upload.class.php
между
Соответственно в настройках источника файлов галереи изменяем параметры
PS: Известные недостатки:
В админке в галереи будет отображаться иходный размер изображения (загруженного), поскольку он считается на клиенте, в момент загрузки, и в процессе ресайза не корректируется.
Этот код валиден для версии ms2gallery 1.3.3-pl, сейчас версия 1.5.0 — и там похоже здорово рефакторили код.
Код для ресайза можно найти по ссылке:
gist.github.com/soulcreate/c45dbb700bfd3ded0e5b
вставляем в процессор core/components/ms2gallery/processors/mgr/gallery/upload.class.php
между
$this->mediaSource->createContainer($product_file->path, '/');
и$file = $this->mediaSource->createObject(
это для версии ms2gallery 1.3.3-plСоответственно в настройках источника файлов галереи изменяем параметры
maxUploadWidth
maxUploadHeight
maxUploadSize
по-максимуму, чтобы не задействовать ресайз на клиенте с помощью plupload'а.PS: Известные недостатки:
В админке в галереи будет отображаться иходный размер изображения (загруженного), поскольку он считается на клиенте, в момент загрузки, и в процессе ресайза не корректируется.
Комментарии: 9
Налицо явное непонимание логики работы компонента.
Оригинальное изображение нужно, чтобы генерировать из него все остальные. Оно не должно пережиматься в принципе — это оригинал.
Но на случай, если пользователь очень далёк от компьютера и пытается загружать 20 мегапиксельные фотки, они пережимаются предварительно на клиенте, чтобы сэкономить время и трафик.
Чтобы не грузить фотки по 10 мегабайт, они пережимаются, предположим, до 1 мегабайта (или какое там указано в настройках максимальное разрешение).
В чём смысл пережатия уже загруженного на сервере 20мп-оригинала я не знаю.
Оригинальное изображение нужно, чтобы генерировать из него все остальные. Оно не должно пережиматься в принципе — это оригинал.
Но на случай, если пользователь очень далёк от компьютера и пытается загружать 20 мегапиксельные фотки, они пережимаются предварительно на клиенте, чтобы сэкономить время и трафик.
Чтобы не грузить фотки по 10 мегабайт, они пережимаются, предположим, до 1 мегабайта (или какое там указано в настройках максимальное разрешение).
В чём смысл пережатия уже загруженного на сервере 20мп-оригинала я не знаю.
Если непонятен мой вопрос, повторяю еще раз: зачем пережимать уже загруженный оригинал?
Ресайз на клиенте нужен для экономии времени и трафика, а что экономит пережимка на сервере?
Если нужно мега-качество, то просто отключи пережимку на клиенте.
Ресайз на клиенте нужен для экономии времени и трафика, а что экономит пережимка на сервере?
Если нужно мега-качество, то просто отключи пережимку на клиенте.
Согласен. В этом и фишка этого плаплоада, чтобы заказчику отдав сайт не пришлось рассказывать ещё и о том, что перед загрузкой фотки, ему придется её ужать средствами какого-нибудь Фотошопа. Этим меня и привлекает компонент ms2Gallery. Хотя… не только этим…
все это очень странно, но у меня складывается впечатление, что только меня не устраивает качество пережимки plupload. Хотя в интернетах натыкался на подобные же недочеты в работе plupload. Раз всех устраивает, подскажите, какой браузер нужен, чтобы plupload нормально пережимал изображения, или какие другие рекомендации?
Я в своё время решил выбрать удобство вопреки качеству. Советовать забить и ждать лучшего инструмента, который делал бы всё то + по качеству не подводил, я думаю не имеет смысла. Каждый руководствуется своими соображениями. Однако моя рекомендация именно в этом.
Да, у меня складывается ровно такое же впечатление, потому что кроме тебя больше этот вопрос никто не поднимает.
Моё личное мнение, что если тебе настолько важно качество и размер фотографий, то лучше подготовить файлы самостоятельно, а не швырять всё подряд с iPhone и надеяться на лучшее.
Как пример могу привести сайт немецкой фотостудии, где все фотографии готовятся к публикации в Photoshop и больше не пережимаются. Там даже некоторые превью потом заменяют вручную, если они неудачно обрезаны.
Моё личное мнение, что если тебе настолько важно качество и размер фотографий, то лучше подготовить файлы самостоятельно, а не швырять всё подряд с iPhone и надеяться на лучшее.
Как пример могу привести сайт немецкой фотостудии, где все фотографии готовятся к публикации в Photoshop и больше не пережимаются. Там даже некоторые превью потом заменяют вручную, если они неудачно обрезаны.
Если непонятен мой вопрос, повторяю еще раз: зачем пережимать уже загруженный оригинал?Для экономии места на хостинге, особенно когда загружают фотки по 20-25Мб, а для сайта достаточно разрешения 800х600.
Ресайз на клиенте нужен для экономии времени и трафика, а что экономит пережимка на сервере?Пережимка на сервере ничего не экономит, но она сохраняет качество изображения
Если нужно мега-качество, то просто отключи пережимку на клиенте.Мега-качество вовсе не нужно. Достаточно обычного разрешения 800х600.
К примеру если пережимать фотки с последнего айфона через plupload, то он пипец что с ними делает.
Недавно обнаружил, что просто добавляя условие
$id = $this->getProperty('id', @$_GET['id']);
if (!$resource = $this->modx->getObject('modResource', $id)) {
return $this->modx->lexicon('ms2gallery_err_no_resource');
}
if ($resource->template == 6) {
$options = [
//'w' => 120,
'h' => 600,
'q' => 90,
'f' => 'jpg'
];
}
можно для разных шаблонов ресурсов делать разные размеры исходных изображений.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.