我有一小段代碼,PHP圖片不能讓背景透明
它的想法是創建一個透明畫布,以定義的高度/寬度,所以我能夠把無論是JPG/png/gif在那裏。
但是,如果它放置一個PNG在那裏與透明度,它需要保持它的透明度。
這是代碼
header("Content-type: image/png");
$canvas = imagecreatetruecolor($maxWidth, $maxHeight);
$image = $_GET['file'];
$leftOffset = ($maxWidth/2) - ($width/2);
$topOffset = ($maxHeight/2) - ($height/2);
$quality = (isset($_GET['quality'])) ? (int) ceil($_GET['quality']/10) : ceil($DEFAULT_QUALITY/10);
$quality = $quality == 10 ? 9 : $quality;
switch($mime){
case "image/jpeg":
$image = imagecreatefromjpeg($image);
$red = imagecolorallocate($canvas, 0, 255, 0);
imagecolortransparent($canvas, $red);
imagefill($canvas, 0, 0 ,$red);
break;
case "image/gif":
$image = imagecreatefromgif($image);
break;
case "image/png":
$background = imagecolorallocate($canvas, 255, 0, 0);
imagecolortransparent($canvas, $background);
imagealphablending($canvas, false);
imagesavealpha($canvas, true);
$image = imagecreatefrompng($image);
break;
}
imagecopyresampled($canvas, $image, $leftOffset, $topOffset, 0, 0, $width, $height, $width, $width);
imagepng($canvas, null, $quality);
imagedestroy($canvas);
然而問題是樣品,畫布保持黑色,而圖像周圍的框區域是透明的。
下面的圖片說明了這一點,石灰綠顏色是人體{背景:石灰;}這樣你就能夠看到透明區域
我試圖用一個透明的顏色後, imagecreatetruecolor
$red = imagecolorallocate($canvas, 255, 0, 0);
imagecolortransparent($canvas, $red);
imagefill($canvas, 0, 0 ,$red);
如果巴紐有淡入淡出效果,它得到它周圍的討厭的紅光,其中的顏色不再是恰好255,0,0
有什麼建議嗎?
謝謝
你見過我的答案嗎? –