CFile::ResizeImageGet сохранять png, gif в jpg при установке степени сжатия в параметрах.

Рейтинг: 9.2149  
Новая
Предложил Малюгин Алексей 03.10.2015 15:39:14

CFile::ResizeImageGet сохранять png, gif в jpg при установке степени сжатия в параметрах.

В данный момент, при масштабировании через  CFile::ResizeImageGet картинка миниатюры сохраняется в том формате в котором исходная картинка. Т.е. png в png, jpg в jpg...

У нас в каталоге 10000 картинок в png формате.
Миниатюры так же в png формате, что в 4 раза увеличивает вес сайта.

Есть предложение, если установлена степень сжатия в параметрах  CFile::ResizeImageGet, то всегда преобразовывать картинку любого формата в jpg. (при этом надо дать возможность выбора цвета беккграунда).

Пришлось в ядре ковырять ResizeImageFile, для собственной реализации этого, что неверно.

Рейтинг: 0.4476  
Семочкин Михаил 04.10.2015 01:00:01
Можно пойти дальше:
1) Сделать явное указание типа выходного файла. В т.ч. палитровые PNG и PNG с прозрачностью (для последних указать прозрачный цвет).
2) Сделать автоматический выбор типа выходного файла по минимальному размеру из явно указанного списка допустимых типов (JPG, PNG, PNG c палитрой в 256,128,64,32,16,8,2 цветов). Бывает, что у небольших миниатюр палитровый PNG получается меньше, чем JPG.
3) Выходные PNG-файлы обрабатывать утилитой PNGOut или аналогичной для минимизации размера.

Это все те операции, которые приходится проделывать вручную при публикации файлов.
Рейтинг: 0  
Малюгин Алексей 04.10.2015 13:55:11
2) Сделать автоматический выбор типа выходного файла по минимальному размеру из явно указанного списка

Боюсь такого делать не будут, тут придется генерировать сразу во всех форматах и сравнивать размеры выходных фалов, что очень замедлит создание кеша миниатюр и в целом даст большую нагрузку на систему.
Рейтинг: 0  
Семочкин Михаил 04.10.2015 14:31:26
Боюсь такого делать не будут,
Я тоже думаю что не будут, но по другой причине.

Нагрузка, конечно, возрастет, но и картинки обычно пачками не публикуют.
Разумеется, пункты 2 и 3 нельзя использовать при отдаче страницы. А при публикации, имхо, будет вполне терпимо.
Рейтинг: 0  
Кирсанов Анатолий 29.05.2016 18:02:57
Можно делать такие вещи (оптимизация по размеру в зависимости от типа) в агенте. Тогда нагрузки на хит не будет.
Рейтинг: -2.1556  
Лобанов Алексей 09.02.2017 19:25:18
Для автоматического сжатия всех изображений на сайте есть готовый модуль.
https://optipic.ru/modules/bitrix
Модуль имеет бесплатный демо-период для ознакомления.