Задать вопрос
@vladimirir

Можно ли конвертировать картинку в формат webp при сохранении её через админку, чтобы она сохранялась в ту же папку, что и оригинальная?

Нужно написать конвертацию загружаемых через админку картинок в формат webp так, чтобы обе картинки сохранялись в одну папку (которая генерируется в upload/iblock) (то есть, название файла будет отличаться только форматом). Есть проблема, что при сохранении файла по событию OnFileSave не получить адрес, куда картинка будет сохраняться, чтобы туда же сохранять конвертированную. Есть ли способ как-то это обойти?

Чуть подробнее описал в этом вопросе https://qna.habr.com/q/1217398
  • Вопрос задан
  • 311 просмотров
Подписаться 1 Простой 3 комментария
Решения вопроса 1
no_one_safe
@no_one_safe
use Bitrix\Main\EventManager;
EventManager::getInstance()->addEventHandler("main", "OnAfterFileSave", array('MyClass', 'execute'));
EventManager::getInstance()->addEventHandler("main", "OnPhysicalFileDelete", array('MyClass', 'executeDelete'));
EventManager::getInstance()->addEventHandler("main", "OnAfterResizeImage", array('MyClass', 'executeResize'));

class MyClass
{

    function execute($arFields)
    {
        if (intval($arFields['HEIGHT']) > 0 && intval($arFields['WIDTH']) > 0) {
            if (strpos($arFields['CONTENT_TYPE'], "image/") !== false && strpos($arFields['CONTENT_TYPE'], "svg") === false) 
           {
               $strPath = \Cfile::GetFileSRC($arFields);
                //Make Webp
            }
        }
    }

    function executeDelete($arFields)
    {
       $strPath = \Cfile::GetFileSRC($arFields);
       //Delete webp
    }
    
    function executeResize($strPath)
    {
        $obFile = new \Bitrix\Main\IO\File(\Bitrix\Main\Application::getDocumentRoot() . $strPath);
        if (strpos($obFile->getContentType(), "image/") !== false && strpos($obFile->getContentType(), "svg") === false) {
           //Make Webp
        }
    }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@anton99zel Куратор тега 1С-Битрикс
29а класс средней школы №7
Поставьте бесплатный модуль с маркета, он делает то, что нужно вам. Ищите по "Webp"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы