Arka imagerotate şeffaflık ()

2 Cevap php

Son 2 gün, ben imagerotate () PHP-GD işlevi kullanarak görüntü döndürmeden sonra arka şeffaflık eklemek için çalışıyordu.

Ama, benim için büyük hayal kırıklığı, tüm çalışma değil.

O sadece onun arkasında siyah bir arka plan dışarı veriyor.

İşte benim kod -


$patchImageS    =   'image.png'; // the image to be patched over the final bg
$patchImage =   imagecreatefrompng($patchImageS); // resource of image to be patched
$patchImage     =   imagerotate($patchImage, 23, 0, 0);
imagepng($patchImage,'tt.png');

Ben işlevi geçirilen parametreleri değiştirmek için çalıştı

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

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

Herhangi bir yardım son derece mutluluk duyacağız.

2 Cevap

% 99 bitmiş cevapları bir dizi sonra, burada buldum çözüm:

// 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);

Burada anahtar imagerotate () çağrısı sizin imagecolorallocatealpha () dahil etmektir ...

php-belgelerinde imagesavealpha (aramak) - ben bu arıyorsun ne olduğunu düşünüyorum.

EDIT: İşte bir örnek:

$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);