簡體   English   中英

PHP GD,全彩色JPG上的透明PNG

[英]PHP GD, Transparent PNG ontop of Full Color JPG

我正在嘗試為網站創建自定義的橫幅頭像。 下圖顯示了需要發生的情況:

要顯示的圖像

如您所見,我有一個半透明的PNG,一個用戶提供的圖像,我想制作第三個圖像。

到目前為止,我編寫的代碼是:

$user_id = 1;   
$name_qry = mysql_query("SELECT a.*, b.* FROM mbr_user_name a, mbr_user_information b WHERE a.user_id = '$user_id' AND b.user_id = '$user_id'");
    while($row = mysql_fetch_array($name_qry)){

    $user_name = $row['user_name'];
    $user_email = $row['user_email'];
    $user_avatar = $row['user_avatar'];
    }

    $height = "208";
    $width = "199";
    $top_image = "../images/bannerShadow_cccccb.png";
    $image = imagecreatefrompng("." . $user_avatar);
    $banner = imagecreatefrompng($top_image);

        //Keeping the Banner Trasnparent
        $transBanner = imagecreate($width, $height);
        $color = imagecolorallocatealpha($transBanner, 0, 0, 0, 127);
        imagefill($transBanner, 0, 0, $color);
        imagecopyresampled($transBanner, $banner, 0, 0, 0, 0, $width, $height, $width, $height);


    imagealphablending($transBanner, true);
    imagecopymerge($image, $transBanner, 0, 0, 0, 0, 199, 208, 100);



    imagepng($image);

它輸出如下所示的內容:

形象不佳

我顯然仍然必須使用戶提供的圖像尺寸正確 ,這是一個簡單的數學問題-現在,我必須使透明度保持透明!

如果我取出:

imagealphablending($transBanner, true);
imagecopymerge($image, $transBanner, 0, 0, 0, 0, 199, 208, 100);

並將最后一行更改為imagepng($transBanner); ,透明png會保持透明!,但是一旦我嘗試將兩者放在一起,它將使透明成為完美的黑色。

有什么建議么?

我前段時間做了類似的事情。 在那里我使用了真彩色圖像。 只需創建一個新圖像,然后將每個圖像的調整大小版本(頭像和覆蓋圖)復制到其中即可:

<?php
$imgOverlay = imagecreatefrompng('overlay.png');
$imgAvatar = imagecreatefrompng('avatar.png');

$width = imagesx($imgOverlay);
$height = imagesy($imgOverlay);

$imgBanner = imagecreatetruecolor($width, $height);
imagecopyresampled($imgBanner, $imgAvatar, 0, 0, 0, 0, $width, $height, imagesx($imgAvatar), imagesy($imgAvatar));
imagecopyresampled($imgBanner, $imgOverlay, 0, 0, 0, 0, $width, $height, $width, $height);

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

$imgAvatar復制到$imgBanner時,可以為化身的真實比例在寬度/高度上添加一些計算。 上面的代碼將只是調整頭像的大小以適合疊加層的大小。

暫無
暫無

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

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