Меню
RSS
Изменить размер картинок на лету в битрикс
 
Изменить размер картинок на лету в битрикс

Встала задачка, на собственном сайте, уменьшить размер превьюшек картинок у анонсов раздела дизайн. Само собой перезаливать все картинки и лень и долго и глупо. Можно воспользоваться стандартной функцией битрикс CFile::ResizeImage и изменить размеры картинок на лету
 
Добрый день,
возник вопрос по методу ResizeImageGet
если его использовать для обрезки изображений (соответственно с параметром BX_RESIZE_IMAGE_EXACT)
например: $file = CFile::ResizeImageGet(
                       $arItem["DETAIL_PICTURE"]["ID"],
                       array('width' => $newWidth, 'height' => $newHeight),
                       BX_RESIZE_IMAGE_EXACT);
можно ли сделать обрезку со смещением, т.е. "отступить" верха изображения n пикселей и наложить обрезку?  
 
Добрый день.
Подскажите как в этот код подставить картинку с поля IMG_MINI "привязка к файлу на сервере"

Так не сохраняет пропорции


Код
$renderImage = CFile::ResizeImageGet($arItem["IMG_MINI"], Array("width" => '250px', "height" => '117px'), BX_RESIZE_IMAGE_EXACT, false); 
      echo '<a href="'.$arItem["DETAIL_PAGE_URL"].'"><img class="img" alt="'.$arItem["NAME"].'" src="'.$arItem["PROPERTIES"]["IMG_MINI"] ["VALUE"].'" /></a>';



Подозреваю что нужно менять что- то тут .$renderImage["src"]. но не пойму что именно и как. Нужно чтобы у картинки сохранялись пропорции. Спасибо за ответ.
 
У меня не выводится alt у картинки, что с этим делать?
 
Здравствуйте Михаил! а есть у Вас решение сделать в bitrix увеличить фото по клику, как на официальном сайте bitrix  http://www.1c-bitrix.ru/products/cms/index.php
С уважением
 
Цитата
Александр написал:
Здравствуйте Михаил! а есть у Вас решение сделать в bitrix увеличить фото по клику, как на официальном сайте bitrix   http://www.1c-bitrix.ru/products/cms/index.php
С уважением
Просто подключите любой плагин, типа fancybox, и сверстайте под ваш дизайн. Тут особо и делать нечего
 
А подскажите как убрать ресайз картинок у товаров в корзине??
что только не пробовал..
в корзине путь к картинки идет - /upload/resize_cache/iblock/e72/110_110_1/e725ae01607c4b21b1­4ffec17cc92c26.jpg
в детальной карточке - /upload/iblock/e7b/e7bc22e91cd29476877ec0137f9adc0d.jpg - нет /resize_cache/

нужно сделать везде как в карточки.
 
Михаил, подскажите, как поменять название папки в которую resizer картинки кладет, например /300_250_ или /400_300_. Проблема возникает с блокировщиками рекламы, в правилах фильтрации изображений у них присутствуют такого вида папки. Может какой-то другой выход есть?
 
Здравствуйте, Михаил, создание превью изображений этой функцией. Но получаемые превью оказываются с артефактами - белый цвет иногда заменяется соседним f4f4f4, из-за этого картинка становится неяркой.
Код
$arFile = CFile::GetFileArray($arItem['PREVIEW_PICTURE']['ID'];
    $imgWidth = $imgHeight = 260;
    $arrImage = CFile::ResizeImageGet(
        $arFile,
        array("width" => $imgWidth, "height" => $imgHeight),
        BX_RESIZE_IMAGE_EXACT,
        true, 
        array("name" => "sharpen", "precision" => 100),//array(),//$arFilter
        false,
        100
    );
Но любые изменения в её параметрах не влияют на итог, думаю дело в работе gd. Нашёл такой вариант решения - http://mithrandir.ru/professional/php/gd-resizing-artefacts-fix.html, но может в битриксе есть настройки для этого?
 
Добрый день
Если используется эта функция имеет смысл использовать сервис Optipic ?
 
Цитата
Макс Терещенко написал:
Добрый день
Если используется эта функция имеет смысл использовать сервис  Optipic  ?
В принципе да, еще подсожмет.
Но я от сервиса отказался, он мне визуально много картинок подпортил.  
 
Добрый день.
Столкнулся со следующей проблемой.

Есть задача вывести несколько изображений в детальной новости. Для этого дела используем fotorama.

Так как изображений несколько, чтобы страница быстрее грузилась, мы для изображений делаем миниатюры. Делаются миниатюры с помощью Битрикс'овой функции ResizeImageGet.

Всё почти-что здорово работает, но иногда на некоторых страницах при первой загрузке выводится вместо первой большой картинки на весь экран, маленькая. Отресайзенная (оу щит, сори за такой слэнг) до размеров которые мы задали ранее. Хотя по логике должна выводится большая и далее миниатюры.

Что я делаю не так?

Вот, код всего этого действа

Код
<div class="col-12 p-0 fotorama"
         data-nav="thumbs" data-thumbwidth="250" data-thumbheight="141" data-allowfullscreen="true">
      <? 
      // additional photos 
      if(count($arResult["MORE_PHOTO"])>0):?> 
      <?foreach($arResult["MORE_PHOTO"] as $PHOTO):?>
      <? $file = CFile::ResizeImageGet($PHOTO, array('width'=>'250', 'height'=>'141'), BX_RESIZE_IMAGE_EXACT, true); ?>
      <a href="<?=$PHOTO["SRC"]?>"> 
      <img border="0" src="<?=$file["src"]?>"   alt="<?=$arResult["NAME"]?>" title="<?=$arResult["NAME"]?>" /> 
      </a> 
      <?endforeach?> 
      <?endif?>
    </div>
 
Цитата
Алексей Клёнин написал:
Добрый день.
Столкнулся со следующей проблемой.

Всё почти-что здорово работает, но иногда на некоторых страницах при первой загрузке выводится вместо первой большой картинки на весь экран, маленькая. Отресайзенная (оу щит, сори за такой слэнг) до размеров которые мы задали ранее. Хотя по логике должна выводится большая и далее миниатюры.
Это вам нужно поразбираться с самой фоторамой, быть может не успевает отработать на странице, при ее загрузке.
 
Получается при уменьшении картинки на лету имея входное изображение 1.jpg при вызове ресайза создастся 2.jpg и покажет его. Тут все класс. А как насчет кеширования заресайзенных картинок связь 1.jpg и 2.jpg где-то сохраняется? Или же при обновлении страницы опять таки из базы приходит ссылка на 1.jpg уменьшение на лету делает из нее 3.jpg такую же как и 2.jpg и отображает уже новую превьюшку. И так получается после каждого обновления будут создаваться новые картинки, а старые, такие же, просто неконтролируемо заполнять место на сервере.
 
Цитата
Александр Коваленко написал:
И так получается после каждого обновления будут создаваться новые картинки, а старые, такие же, просто неконтролируемо заполнять место на сервере.
Не должны. Если не меняется исходная картинка- то ее обработанная копия, лежит в /upload/resize_cache - и всегда отдается одна и та же.
Если обновится исходная, то создастся новая копия. Старые удалятся если сбросите кеш сайта.
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

Блог-note: заметки разработчика

Открытие мобильного приложения Apache Cordova по ссылке

Достаточно часто нужно реализовывать открытие мобильного приложения по ссылке. Например: при отправке ссылки на электоро...

Перенос Битрикс сайта с хостинга на хостинг, инструкция

Достаточно часто спрашивают как перенести сайт работающий на 1С Битрикс с одного хостинга на другой, как раз подвернулас...

Хостинг панель BrainyCp: оптимизация под 1С-битрикс

В этой видео-заметке расскажу как установить и оптимизировать панель управления сервером BrainyCp для использования в св...

Дополнительные опции/услуги, добавляемые в корзину, в карточке товаров

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

Добавление не существующего товара в корзину и заказ, 1С-Битрикс

Задача: нужно добавить в корзину товар, которого не существует в каталоге, с возможностью задать ему произвольные назван...

Очистка корзины в 1С-Битрикс одним нажатием

В стандартной корзине Битрикс не хватает кнопки для полной очистки корзины одним нажатием. Требуется это довольно редко,...

Ссылка и название раздела в списке новостей Битрикс

Если нужно вывести название раздела инфоблока в котором находится конкретный элемент/новость в компоненте "списк новосте...

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

На одном из разрабатываемых сайтов, пользователи формируют его контент. После регистрации, становится доступен персональ...

Цвета из справочника Highload блоков в списке новостей

На сайте выводятся новости с помощью компонента news.list, при этом у новостей есть свойство "Цвета" типа &quo...