maler1988
@maler1988
Web-программист (1С Bitrix)

Почему не срабатывает функция imagejpeg() и как выявить причину ошибки?

Конвертирую изображение из png в jpg, иногда функция imagejpeg() не срабатывает, не могу понять почему.
//Безопасная конвертация png в jpg с заполнением прозрачной части белым цветом
        $tmp_name = $arrFile['tmp_name'];
        $strFileName = substr(md5(uniqid("", true)), 0, 30) . '.jpg';
        $dir_add = substr(md5(uniqid("", true)), 0, 3);
        $newFilePath = $_SERVER["DOCUMENT_ROOT"] . '/upload/iblock/' . $dir_add . '/' . $strFileName;

        $image = imagecreatefrompng($tmp_name);
        $bg = imagecreatetruecolor(imagesx($image), imagesy($image));
        imagefill($bg, 0, 0, imagecolorallocate($bg, 255, 255, 255));
        imagealphablending($bg, true);
        imagecopy($bg, $image, 0, 0, 0, 0, imagesx($image), imagesy($image));
        imagedestroy($image);
        $quality = 80; // 0 = worst / smaller file, 100 = better / bigger file
        if(imagejpeg($bg, $newFilePath, $quality)){
            $result = true;
        } else {
            echo 'Ошибка записи файла<br/>';
            \CEventLog::Add([
                    "SEVERITY" => "ERROR", //Тип записи, может быть ERROR или WARNING
                    "AUDIT_TYPE_ID" => 'convert_file', //Тип отcлеживаемого события
                    "MODULE_ID" => "main", //ID модуля
                    "ITEM_ID" => "",
                    "DESCRIPTION" => json_encode(['mess'=>'Error save jpg file', 'file_path'=>$newFilePath, 'quality'=>$quality]), //Данные в формате JSON
            ]);
        }
        imagedestroy($bg);


В большинстве случаев, конвертация срабатывает без проблем, но иногда imagejpeg() возвращает false. Как выявить причину ошибки?
  • Вопрос задан
  • 325 просмотров
Пригласить эксперта
Ответы на вопрос 2
@vaajnur
битриксоид
включи логирование, вывод ошибок. Возможно, проблема в формате картинок - не все jpgшные.
Ответ написан
Комментировать
@grinat
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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