Фоновая трансперенситивность в изображении ()

Начиная с последних двух дней, я пытался добавить трансверсальность к фону после поворота изображения с помощью функции imagerotate () PHP-GD.

Но, к моему большому разочарованию, это совсем не работает.

Это просто выделяет черный фон за ним.

Вот мой код –


 $ patchImageS = 'image.png';  // изображение, которое должно быть исправлено по окончательному bg
 $ patchImage = imagecreatefrompng ($ patchImageS);  // ресурс изображения для исправления
 $ patchImage = imagerotate ($ patchImage, 23, 0, 0);
 imagepng ($ patchImage, 'tt.png');

Я попытался изменить передаваемые параметры в функции

imagerotate ($ patchImage, 23, 5, 0);

imagerotate ($ patchImage, 23, 0, 5);

Любая помощь будет высоко оценен.

После того, как число 99% готовых ответов, вот решение, которое я нашел:

// Create, or create from image, a PNG canvas $png = imagecreatetruecolor($width, $height); // Preserve transparency imagesavealpha($png , true); $pngTransparency = imagecolorallocatealpha($png , 0, 0, 0, 127); imagefill($png , 0, 0, $pngTransparency); // Rotate the canvas including the required transparent "color" $png = imagerotate($png, $rotationAmount, $pngTransparency); // Set your appropriate header header('Content-Type: image/png'); // Render canvas to the browser imagepng($png); // Clean up imagedestroy($png); 

Ключевым моментом здесь является включение вашего imagecolorallocatealpha () в ваш вызов imagerotate () …

ищите imagesavealpha () в php-документации – я думаю, что это то, что вы ищете.

EDIT: вот пример:

 $png = imagecreatefrompng('./alphachannel_example.png'); // Do required operations $png = imagerotate($png, 23, 0, 0); // Turn off alpha blending and set alpha flag imagealphablending($png, false); imagesavealpha($png, true); // Output image to browser header('Content-Type: image/png'); imagepng($png); imagedestroy($png);