Массовая оптимизация картинок в менеджерах ресурсов

Иногда возникает потребность массово обработать картинки, загруженные ранее - уменьшить размеры или оптимизировать по качеству. 

На странице менеджера ресурса есть кнопка для обработки картинок его типа. Он позволяет менять размеры, уменьшить качество, поставить водяной знак. 

Указываем папку, в которую будут выгружены обработанные картинки (исходные картинки скрипт не трогает). 

Важный момент - структура папок по itemID внутри типа ресурса также копируется - для упрощения процесса обновления. 

Процесс выполняется сначала отдельно для основных картинок, а потом отдельно для иконок (можно указать ту же папку, тогда будет просто полное воссоздание структуры папок ресурса, где в itemID папке лежат файлы основные и thumb).

Как провести оптимизацию картинок через внешнее действие 

Для этого используем Внешнее действие processimage. Картинки могут быть любые (не только те, что идут под менеджером ресурсов). 

Пример для одной картинки: 

select 'processimage' type, 
  '/uploads/rs/user/ru/1569890095_pervoru_43399.jpg' path, 
  '/uploads/rs/user/ru/1569890095_pervoru_43399_1.jpg' url,
  340 width, 340 height, 40 quality, '1' fitWithWhitespace, 
  '' watermarkUrl

Как это работает: 

Если требуется обработать множество картинок, то select будет содержать выборку из некоторой таблицы. Для каждой строки во внешнем действии будет выполнена обработка. 

Пример обработки для картинок ресурсов с кодом user: 

select 'processimage' type, 
  [url] path, 
  replace([url], '/uploads/rs/user', '/uploads/temp1') url,
  340 width, 340 height, 55 quality, '1' fitWithWhitespace, 
  '' watermarkUrl
from as_rs_resources where entityCode='user'
union all
select 'processimage' type, 
  [thumbUrl] path, 
  replace([thumbUrl], '/uploads/rs/user', '/uploads/temp1') url,
  900 width, 900 height, 55 quality, '1' fitWithWhitespace, 
  '' watermarkUrl
from as_rs_resources where entityCode='user'

Здесь мы обрабатываем как полноразмерные картинки, так и миниатюры

Примечание: Предварительно создайте каталог назначения, если он не существует в текущий момент. 

 

Страница-источник на сайте falconspace.ru