簡體   English   中英

PHP / GD - 透明背景

[英]PHP/GD - transparent background

我想在PHP中結合GD進行以下操作。 不幸的是,ImageMagick不是一個選項,但這似乎是一個常見的問題, 必須有一個解決方案,我似乎無法找到它。

我想創建一個透明背景的PNG。 然后我想在上面畫一個矩形,在上面復制一個圖像,然后添加一些文字。 一種方法如下:

$image = ImageCreateTrueColor (800, 600);
imagecolortransparent ($image, 0); //0 is pure black, the default fill color
imagerectangle (...);
//code to copy an image
imagettftext ($image, ...);
imagepng ($image);

這樣可以正常工作,但復制圖像的一部分可能是黑色,和/或文本可能是黑色。 這也變得透明,這是我想要的。

imagefill ($image, 0,0, 0x7FFF0000);
imagetransparent ($image, 0x7FFF0000);

上面的代碼是我在網上找到的,用紅色填充它,然后使紅色透明。 同樣,這會導致圖像中的所有紅色變為透明。 我可以選擇一種不太可能出現的顏色,但我無法保證這一點。

有什么我想念的嗎? 這可以修復嗎? 謝謝你的回復!

如果您要合並圖像, imagecolortransparent可能不是您想要的,因為單色透明度是令人討厭的。

相反,嘗試使用透明填充掩碼,如下所示:

<?php
$image = imagecreatetruecolor(100, 100);

// Transparent Background
imagealphablending($image, false);
$transparency = imagecolorallocatealpha($image, 0, 0, 0, 127);
imagefill($image, 0, 0, $transparency);
imagesavealpha($image, true);

// Drawing over
$black = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 25, 25, 75, 75, $black);

header('Content-Type: image/png');
imagepng($image);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM