function OnAfterIBlockElementUpdateOrAddHandler(&$arFields)
{
$bannersIblockId = 67;
if ($arFields['IBLOCK_ID'] == $bannersIblockId) {
// для баннеров, если в детальную картинку загружается gif,
// то преобразуем её в png(получаем первый кадр) и сохраняем в PREVIEW_PICTURE
if (!empty($arFields['DETAIL_PICTURE']) && $arFields['DETAIL_PICTURE']['type'] === "image/gif") {
// получим массив файла, чтобы получить путь к картинке на сервере
$file = CFile::GetFileArray($arFields['DETAIL_PICTURE_ID']);
if ($file) {
$filename = $_SERVER['DOCUMENT_ROOT'] . $file['SRC'];
$img = @imagecreatefromgif($filename);
if ($img) {
$newImage = substr($filename, 0, strlen($filename) - 4) . ".png";
// сохраняем файл в той же дирректории, только в png
$statusPng = imagepng($img, $newImage);
imagedestroy($img);
// картинка есть, значит добавим ее в PREVIEW_PICTURE
if ($statusPng) {
$el = new CIBlockElement;
$arLoadElementArray = [
"PREVIEW_PICTURE" => CFile::MakeFileArray($newImage)
];
$res = $el->Update($arFields['ID'], $arLoadElementArray);
if (!$res) {
global $APPLICATION;
$APPLICATION->throwException("При обновлении Картинки для анонса произошла ошибка: " . $el->LAST_ERROR);
return false;
}
}
}
}
}
}
}