Работа с изображением в Битрикс
Последние записи
Получаем полный путь к картинке в Битриксе
CFile::GetPath(315);
Получаем результат:
/upload/iblock/c1d/k2a29s8d47791f814gja8fd038d83790.jpg
Resize изображений
//Мы можем использовать следующие константы преобразований:
//BX_RESIZE_IMAGE_EXACT — масштабирует в прямоугольник $arSize c сохранением пропорций, обрезая лишнее;
//BX_RESIZE_IMAGE_PROPORTIONAL — масштабирует с сохранением пропорций, размер ограничивается $arSize;
//BX_RESIZE_IMAGE_PROPORTIONAL_ALT — масштабирует с сохранением пропорций, размер ограничивается $arSize, улучшенная обработка вертикальных картинок.
$arFileTmp = CFile::ResizeImageGet(
$row['PREVIEW_PICTURE'],
array("width" => 1000, "height" => 1000),
BX_RESIZE_IMAGE_PROPORTIONAL,
true
);
echo $arFileTmp["src"];
Загрузка и обновление изображения
Формируем из загружаемого изображения массив. Например, для обновления изображения в товаре
$arFile = CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."PATH_TO_IMAGE");
Возвращает массив следующего вида
Array
(
[name] => caa99553003f620f2b1ed91ebb7129e1.jpg
[size] => 913948
[tmp_name] => /home/bitrix/www/upload/tmp/434/caa99553003f620f2b1ed91ebb7129e1.jpg
[type] => image/jpeg
)
Обновим, к примеру, фото раздела
$arFile = CFile::MakeFileArray('PATH_TO_IMAGE');
//Чтобы получить массив данных уже загруженного изображения
//Воспользуемся следующей конструкцией
//$arFile = CFile::GetFileArray('ID_OF_IMAGE');
$arPICTURE = $arFile;
$arPICTURE["MODULE_ID"] = "iblock";
$bs = new CIBlockSection;
$arFields = Array(
"PICTURE" => $arPICTURE,
);
//$ar_result['ID'] - ID обновляемой секции
$res = $bs->Update($ar_result['ID'], $arFields, false, false, true);
Удаление PREVIEW_PICTURE или DETAIL_PICTURE
$el = new \CIBlockElement;
$el->Update($ELEMENT_ID, array(
"PREVIEW_PICTURE" => array('del' => 'Y'),
"DETAIL_PICTURE" => array('del' => 'Y'),
), false, false);
Удаление фотографий из MORE_PHOTO
\CIBlockElement::SetPropertyValuesEx($ELEMENT_ID, $IBLOCK_ID, array("MORE_PHOTO" => array("VALUE" => array("del" => "Y"))));
Комментарии