Я пытаюсь создать файл jpeg путем слияния прозрачного png над jpeg. Я пробовал сеть & другие вопросы, но я не нашел то, что искал. Нижеприведенный код успешно работает в моей локальной среде, но как только я загружаю его на свой сервер [Godaddy/Linux], прозрачный фон png становится белым, таким образом, покрывая jpeg. Я попытался использовать 'imagecopyresampled' вместо 'imagecopy', как предложил here, но это не сработало. Есть ли что-то, что я делаю здесь неправильно? Проверенный сервер GD установлен. Любое предложение будет оценено по достоинству.Перекрытие прозрачное PNG над JPEG
$dest = imagecreatefromjpeg($jpegFileURL);
$src = imagecreatefrompng($pngFileURL);
list($destWidth, $destHeight) = getimagesize($jpegFileURL);
list($srcWidth, $srcHeight) = getimagesize($pngFileURL);
/***
* create base image
*/
$base_image = imagecreatetruecolor($destWidth,$destHeight);
/***
* make $base_image transparent
*/
imagealphablending($base_image, false);
$col = imagecolorallocatealpha($base_image,255,255,255,127);
imagefilledrectangle($base_image,0,0,$destWidth,$destHeight,$col);
imagealphablending($base_image,true);
imagesavealpha($base_image, true);
/***
* Copy JPEG & then PNG over JPEG
*/
imagecopy($base_image, $dest, 0, 0, 0, 0, $destWidth, $destHeight);
imagecopy($base_image, $src, 0, 0, 0, 0, $srcWidth, $srcWidth);
/***
* Output the file
*/
header('Content-Type: image/jpeg');
imagejpeg($base_image,$urlToSave);
imagedestroy($dest);
imagedestroy($src);
EDIT: JPEG и PNG используется здесь также генерируется скриптом, который я затем использовать здесь, чтобы слиться.
Чтобы убедиться, что генерация файлов не была проблемой, я протестировал ее с помощью png с прозрачным фоном, не созданным моим кодом, и он сработал.
Таким образом, я предполагаю, что проблема может быть из поколения png.
Image attached for one that worked.
Код, используемый для генерации png.
$image = imagecreatefromjpeg($fileJpegURL);
imagealphablending($image, true);
$transparentcolour = imagecolorallocate($image, 255,255,255);
imagecolortransparent($image, $transparentcolour);
header('Content-Type: image/png');
imagepng($image, $pngFileSavePath, 1);
Пробовал ваш фрагмент, отлично работал на местном уровне, но не везло на сервере. При запуске скрипта ошибок нет. –
Вы проверили журнал ошибок сервера? Обычно 'error_reporting' отключен на производственных площадках. – timclutton
Да, проверен журнал ошибок php, также отмечен error_reporting. Другие ошибки php были зарегистрированы, но ни один из них не был зарегистрирован, когда был запущен вышеприведенный фрагмент. –