如何旋转图像和调整大小与透明背景使用PHP GD


How to rotate image and resize with transparent background using PHP GD

下面的代码用于旋转和调整图像的大小,

<?php
$src = "41611326.png";
// Get new dimensions
list($width, $height) = getimagesize($src);
$new_width = 192;
$new_height = 192;
$dstimage=imagecreatetruecolor($new_width,$new_height);
$srcimage = imagecreatefrompng($src);
$degrees = -30;
$srcimage = imagerotate($srcimage, $degrees, 0) ;
imagealphablending($dstimage, false);
imagesavealpha($dstimage, true);
imagecopyresampled($dstimage,$srcimage,0,0,0,0, $new_width,$new_height,$width,$height);
header('Content-type: image/png') ;
imagepng($dstimage) ;
?>

但是它没有得到输出图像的透明背景。如何保持透明的背景。

请帮忙

function rotate_transparent_img( $img_resource, $angle ){
    $pngTransparency = imagecolorallocatealpha( $img_resource , 0, 0, 0, 127 );
    imagefill( $img_resource , 0, 0, $pngTransparency );
    $result = imagerotate( $img_resource, $angle, $pngTransparency );
    imagealphablending( $result, true );
    imagesavealpha( $result, true );
    return $result;
}

用法:

$img_resource = imagecreatefrompng('transparent_img.png');
$angle = 30;
$res = rotate_transparent_img( $img_resource, $angle );
header('Content-Type: image/png');
imagepng($res);

我认为你需要使用imagecolortransparent()函数

文档

change:

$srcimage = imagerotate($srcimage, $degrees, 0) ;

:

$srcimage = imagerotate($srcimage, $degrees, -1);