Рейтинг: 8.4336  
На голосовании
Предложил Ерофеев Анатолий 02.10.2015 09:28:57

Изменение качества изображения в ResizeImageGet

Речь пойдет о методе
https://dev.1c-bitrix.ru/api_help/main/reference/cfile/resizeimageget.php

Метод мощный и удобный. Но недавно столкнулись с интересной проблемой на проекте. Контент-менеджер знал, что баннеры будут урезаны и сразу подготовил картинки нужного размера. При этом картинки весили по 500 кб. В настройках главного модуля стояло сжатие с качеством 95%, но, т.к. картинки были уже нужного размера, сжатия по размеру и качеству не произошло и на главной странице остались картинки по полмегабайта весом.

Предлагаю модифицировать ResizeImageGet таким образом, чтобы он, даже если картинку не надо сжимать по размерам изображения, сжимал ее по качеству.
Рейтинг: 8.3437  
Новая
Предложил Задорин Евгений 21.08.2014 11:57:14

CFile::ResizeImageGet и description файла

В данный момент функция CFile::ResizeImageGet возвращает массив с ключами src, width, height, size.
Поэтому, чтобы вытащить описание файла (в котором очень удобно хранить атрибут alt картинки), приходится делать дополнительный вызов CFile::GetByID. Говоря про описание файла, я имею в виду поле DESCRIPTION в таблице b_file.

Если бы CFile::ResizeImageGet возвращала дополнительно еще и ключ description, то работать с выводом изображений стало бы намного приятнее.
Рейтинг: 20.4595  
На голосовании
Предложил Хан Эрли 02.01.2012 20:52:47

CFile::ResizeImageGet

Предложения:
  1. На странице документации привести подробные примеры использования функции для установки водяных знаков. Указать какие параметры обязательны, а какие нет.
  2. В случае использования режима "BX_RESIZE_IMAGE_EXACT" дать возможность задать фоновый цвет, а ещё лучше, фоновую картинку, т.к. когда картинка обрезается до нужных размеров могут появиться чёрные поля (описано тут).
  3. Вообще то по этой функции надо бы лучше сделать документацию. Как сохраняет файлы, куда, что и как кеширует... А то приходится гуглить и копаться в кодах :(

    добавлено 03.01.12


  4. Надо добавить флаг "принудительного растягивания". т.е. предположим, у нас выставлены размеры 400х300, а картинка загружена размером 300х250. В таком случае функция не отработает. А жаль... Иногда, пусть и с потерей качества надо растягивать
  5. Добавить флаг "принудительно накладывать водяной знак". Пример:
    Есть у нас код:

    $arFilter_watermark = Array(
        Array( 'name' => 'watermark',
          'position' => 'br',
                'size'=>'real',
               'type'=>'image',
          'alpha_level'=>'50',
          'file'=>$_SERVER['DOCUMENT_ROOT'].'/images/icons/img.png', 
            ),
    );
          
       $arFileTmp = CFile::ResizeImageGet(
          $arResult["DETAIL_PICTURE"],
          array("width" => 450, 'height' => 300),
          BX_RESIZE_IMAGE_PROPORTIONAL_ALT,
          false,
          $arFilter_watermark
       );
    Если загрузить картинку размером 300х200, то функция не отработает и водяных знаков не будет :(