php 更多信息,请访问

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php 更多信息,请访问相关的知识,希望对你有一定的参考价值。

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;
                        }
                    }
                }
            }
        }
    }
}

以上是关于php 更多信息,请访问的主要内容,如果未能解决你的问题,请参考以下文章

php 更多信息,请访问

php 更多信息,请访问

php 更多信息,请访问

php 更多信息,请访问

php 更多信息,请访问

php 更多信息,请访问