簡體   English   中英

將透明png加載到gd php中但不要使其背景透明

[英]Load transparent png into gd php but don't make it's background transparent

我正在嘗試從GD中的動態文本數據創建圖像,並在頂角放置一個徽標。 圖像的背景顏色將根據傳入的數據而變化,因此我不能將徽標另存為沒有Alpha通道的圖像。

我使用imagefill()創建圖像,用動態背景顏色填充它,然后使用imagettftext()添加文本,然后加載我的徽標。我在將徽標放入圖像時遇到問題而沒有保留其背景顏色'透明'。 所以我希望它背后的動態背景顏色是用imagefill()設置的。 但是,它保持了加載的透明度背景,因此將png的這一部分寫為透明。 我在加載后嘗試在徽標上調用imagefill()(使用設置目標圖像背景的相同rgb),但這沒有做任何事情。

以下是我的代碼:

$background = $_GET['background'];
$data1 = $_GET['data1'];
$data2 = $_GET['data2'];
$r = $_GET['r'];
$g = $_GET['g'];
$b = $_GET['b'];

$png_image = imagecreate(400, 200);
$gd_text_color = imagecolorallocate($png_image, 255, 255, 255);
$gd_background_color = imagecolorallocate($png_image, $r, $g, $b);
imagefill($png_image, 0, 0, $gd_background);

$text1 = "test test $data1";
$text2 = "test test again $data2";
$font = 'Lato-regular.ttf';
imagettftext($png_image, 18, 0, 20, 20, $gd_text_color, $font, $text1);
imagettftext($png_image, 18, 0, 20, 50, $gd_text_color, $font, $text2);

//trying to get this logo and place it in the corner.
$logo = imagecreatefrompng("images/logo.png");
imagecopy($png_image, $logo, 10, 10, 0, 0, 100, 30);

header('Content-type: image/png');
imagepng($png_image, $filename);
imagedestroy($png_image);

以下是該代碼的輸出: http//i.imgur.com/n25h9Js.png以下是加載到接受alpha通道的程序時圖像的樣子: http//i.imgur.com/3OIRupN。 PNG

有誰知道我是如何實現我正在嘗試的?

謝謝你的時間。

編輯

嘗試解釋我想要的是另一張圖片。 頂部圖像是我目前得到的,底部圖像是我想要的。 我只是想加載一個透明的PNG,可以坐在不同顏色的背景上。 但是我要么像它在這里顯示的那樣(透明背景)還是黑色背景(因為我猜不會看到alpha通道?)。 希望這可以幫助。 圖片: 錯誤在頂部,模擬了我想要的版本如下。

編輯2

根據下面的評論,我將它從imagecreate()更改為imagecreatetruecolor(),現在它工作正常! 我想要解釋為什么如果有人有時間這就解決了它,但是現在,謝謝所有評論或甚至花時間看這個問題的人。

我懷疑你的imagecreate()可能會引起你的問題,因為它會創建一個沒有真彩色圖像靈活性或寬度的palettised圖像。

我建議你用imagecreatetruecolor()替換它。

暫無
暫無

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

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