PHP透明图像分层问题
我就是不知道为什么会这样:PHP透明图像分层问题,php,image,image-processing,Php,Image,Image Processing,我就是不知道为什么会这样: <?php $image = imagecreatefromjpeg($_GET['u']); imagealphablending($image, true); imagesavealpha($image,true); $overlay = imagecreatefrompng("overlay.png"); imagealphablending($overlay, true); imagesave
<?php
$image = imagecreatefromjpeg($_GET['u']);
imagealphablending($image, true);
imagesavealpha($image,true);
$overlay = imagecreatefrompng("overlay.png");
imagealphablending($overlay, true);
imagesavealpha($overlay,true);
$finalImage = imagecreate(85,85);
imagealphablending($finalImage, true);
imagesavealpha($finalImage,true);
$trans = imagecolorallocate($finalImage,255,0,0);
imagecolortransparent($finalImage,$trans);
imagefill($finalImage, 0, 0, $trans);
imagecopy($finalImage, $image, 5, 5, 0, 0, 75, 75);
imagecopy($finalImage, $overlay, 0, 0, 0, 0, 85, 85);
imageDestroy($image);
imageDestroy($overlay);
// Content type
header('Content-type: image/png');
imagepng($finalImage);
imagedestroy($finalImage);
给予:
及
给予:
这可能是某种调色板不一致或什么-一个是PNG,另一个是JPEG
Grrrrrrrr。。。艾伦生气了。。。阿兰想要扣球 请尝试以下代码:
<?php
$image = imagecreatefromjpeg($_GET['u']);
imagesavealpha($image, true);
imagealphablending($image, true);
$overlay = imagecreatefrompng("overlay.png");
imagesavealpha($overlay, true);
imagealphablending($overlay, true);
$finalImage = imagecreatetruecolor(85,85);
imagefill($finalImage, 0, 0, IMG_COLOR_TRANSPARENT);
imagesavealpha($finalImage, true);
imagealphablending($finalImage, true);
/*
$trans = imagecolorallocatealpha($finalImage, 255, 0, 0, 127);
imagecolortransparent($finalImage, $trans);
imagefill($finalImage, 0, 0, $trans);
*/
imagecopy($finalImage, $image, 5, 5, 0, 0, 75, 75);
imagecopy($finalImage, $overlay, 0, 0, 0, 0, 85, 85);
//imageDestroy($image);
//imageDestroy($overlay);
// Content type
header('Content-type: image/png');
imagepng($finalImage);
//imagedestroy($finalImage);
?>
它解决了您的问题吗?当我将imagecreate()更改为ImageCreateTureColor()时,灰色矩形消失了,所以我认为这毕竟是调色板问题
无论如何,谢谢各位。对我来说绝对是一种享受。谢谢
//imagecopy($finalImage, $image, 5, 5, 0, 0, 75, 75);
imagecopy($finalImage, $overlay, 0, 0, 0, 0, 85, 85);
//ImageDestroy($image);
//ImageDestroy($overlay);
<?php
$image = imagecreatefromjpeg($_GET['u']);
imagesavealpha($image, true);
imagealphablending($image, true);
$overlay = imagecreatefrompng("overlay.png");
imagesavealpha($overlay, true);
imagealphablending($overlay, true);
$finalImage = imagecreatetruecolor(85,85);
imagefill($finalImage, 0, 0, IMG_COLOR_TRANSPARENT);
imagesavealpha($finalImage, true);
imagealphablending($finalImage, true);
/*
$trans = imagecolorallocatealpha($finalImage, 255, 0, 0, 127);
imagecolortransparent($finalImage, $trans);
imagefill($finalImage, 0, 0, $trans);
*/
imagecopy($finalImage, $image, 5, 5, 0, 0, 75, 75);
imagecopy($finalImage, $overlay, 0, 0, 0, 0, 85, 85);
//imageDestroy($image);
//imageDestroy($overlay);
// Content type
header('Content-type: image/png');
imagepng($finalImage);
//imagedestroy($finalImage);
?>