Конвертирую изображение из 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. Как выявить причину ошибки?