Наложение водяного знака при импорте изображений в Битрикс

Если есть пути картинок и их нужно загрузить на сайт при этом еще нужно наложить водяной знак, пишем класс выполнение метода которого установим на крон для автоматизации загрузки изображений. Ссылки на изображения в примере хранятся в свойстве IMAGES_LINKS, загружаем обработанные изображение в PREVIEW_PICTURE и свойство MORE_IMAGES.
logo
logo
PHP
<?php
require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");

class import
{
    public $iblock_catalog_id            = 14;                                    //Айди каталога
    public $limit_products_upload_images = 10;                                    //Лимит товаров для загрузки изображений за один запрос
    public $folder_temp_images           = "/temp_images/";                       //Папка для загрузки временных оригинальных изображений
    public $folder_temp_images_resize    = "/temp_images/resize/";                //Папка для загрузки временных обработанных изображений
    public $path_temp_images_resize      = "/cron/import/temp_images/resize/";    //Путь к папке от корня для загрузки временных обработанных изображений
    public $max_width_image              = 800;                                   //Максимальная ширина загружаемой картинки
    public $max_height_image             = 800;                                   //Максимальная высота загружаемой картинки

    //Загружаем и обрабатываем изображения для товаров
    public function uploadImages()
    {
        CModule::IncludeModule("iblock");

        $arFilter = Array("IBLOCK_ID" => $this->iblock_catalog_id, "PREVIEW_PICTURE" => false, "ACTIVE" => "Y");
        $res = CIBlockElement::GetList(Array(), $arFilter, false, false, Array());
        $a = 0;

        while($ob = $res->GetNextElement())
        {
            $arFields = $ob->GetFields();
            $arProps = $ob->GetProperties();

            if(!empty($arProps['IMAGES_LINKS']['VALUE']))
            {
                $i = 1;
                $path_temp_images = [];
                $arr_images = [];

                foreach($arProps['IMAGES_LINKS']['VALUE'] as $image_url)
                {
                    $image_name = $i."_".$arFields['ID'].".jpg";
                    $path_upload_image = __DIR__.$this->folder_temp_images.$image_name;
                    file_put_contents($path_upload_image, file_get_contents($image_url));

                    $path_upload_image_resize = __DIR__.$this->folder_temp_images_resize.$image_name;
                    $path_temp_images[$i]['original'] = $path_upload_image;
                    $path_temp_images[$i]['resize'] = $path_upload_image_resize;

                    $water_marker = [
                        "type"             => "image",
                        "min_size_picture" => false,
                        "alpha_level"      => 70,
                        "size"             => "medium",
                        "position"         => "bottomright",
                        'file' => $_SERVER['DOCUMENT_ROOT'].'/watermark.png',
                    ];
                    CFile::ResizeImageFile($path_upload_image, $path_upload_image_resize, array('width' => $this->max_width_image, 'height' => $this->max_height_image), "BX_RESIZE_IMAGE_PROPORTIONAL", $water_marker, false, false);

                    $protocol = stripos($_SERVER['SERVER_PROTOCOL'],'https') === true ? 'https://' : 'http://';
                    $image_resize_url = $protocol.$_SERVER['SERVER_NAME'].$this->path_temp_images_resize.$image_name;
                    $arr_images[] = CFile::MakeFileArray($image_resize_url);

                    $i++;
                }

                $el = new CIBlockElement;
                $arLoadProductArray = Array(
                    "PREVIEW_PICTURE" => $arr_images[0]
                );
                $el->Update($arFields['ID'], $arLoadProductArray);


                CIBlockElement::SetPropertyValuesEx($arFields['ID'], false, array("MORE_IMAGES" => $arr_images));

                foreach($path_temp_images as $key => $path)
                {
                    unlink($path['original']);
                    unlink($path['resize']);
                }

                $a++;
            }

            if($this->limit_products_upload_images == $a)
            {
                break;
            }

        }
    }

}

Спасибо! Заявка успешно отправлена, мы с Вами свяжемся в ближайшее время!