2010-01-04 104 views
2

我只是不知道爲什麼這樣?PHP透明圖像分層問題

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

>

產生以下:

alt text http://alanjack.co.uk/travel/0rotatedImage.php%20(1).png

在做imagecopy的一個或其他產生健康結果:

  imagecopy($finalImage, $image, 5, 5, 0, 0, 75, 75); 
    //imagecopy($finalImage, $overlay, 0, 0, 0, 0, 85, 85); 
    //ImageDestroy($image); 
    //ImageDestroy($overlay); 

捐贈:

alt text http://alanjack.co.uk/travel/1rotatedImage.php%20(1).png

  //imagecopy($finalImage, $image, 5, 5, 0, 0, 75, 75); 
    imagecopy($finalImage, $overlay, 0, 0, 0, 0, 85, 85); 
    //ImageDestroy($image); 
    //ImageDestroy($overlay); 

,並提供:

alt text http://alanjack.co.uk/travel/2rotatedImage.php%20(1).png

難道是某種調色板不一致或某事 - 事做一個是一個PNG和另一個JPEG?

Grrrrrrrr ...艾倫生氣......艾倫想要SMASH !!!

回答

2

試試這個代碼,而不是:

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

?> 

它是否解決問題了嗎?

+0

對我來說絕對是一種享受。謝謝 – 2012-08-08 08:35:57

0

當我將imagecreate()更改爲imagecreatetruecolor()時,灰色矩形消失了,所以我認爲這畢竟是調色板問題!

謝謝反正傢伙。