簡體   English   中英

透明gif /黑色背景?

[英]Transparent gif/black background?

我有以下內容,除了gif假定是透明的而且它正在創建黑色背景之外,它可以工作,如果我將所有(imagesavealpha等)內容更改為$ container,那么它將為我添加到的文本創建透明背景這個圖片。 我將如何擺脫黑色背景? 基本上,這是一個簽名類型的圖像。 我也寫東西,我認為你不需要看。

  $im = imagecreatefromgif("bg.gif");

  $container = imagecreatetruecolor(400, 160);
  imagesavealpha($im, true);
  imagealphablending($im, false);

  $trans_colour = imagecolorallocatealpha($im, 0, 0, 0, 127);
  $w = imagecolorallocate($container, 255, 255, 255);

  imagefill($im, 0, 0, $trans_colour);

  imagecopymerge($container, $im, 0, 0, 0, 0, 460, 180, 100);

下面的解決方案比您選擇的解決方案要簡單。 它還直接解決了這個問題。


$transparencyIndex = imagecolortransparent($imageSrc);
$transparencyColor = array('red' => 255, 'green' => 255, 'blue' => 255);

if ($transparencyIndex >= 0) { $transparencyColor = imagecolorsforindex($imageSrc, $transparencyIndex);
}

$transparencyIndex = imagecolorallocate( $imageNew, $transparencyColor['red'], $transparencyColor['green'], $transparencyColor['blue'] ); imagefill($imageNew, 0, 0, $transparencyIndex); imagecolortransparent($imageNew, $transparencyIndex);

要調整大小和存儲GIF圖像,可以分別使用imagecopyresampled()和imagegif()。

我使用這兩個功能來創建新的透明真彩色圖像。

function image_createtruecolortransparent($x,$y) 
{
    $i = imagecreatetruecolor($x,$y);
    $b = imagecreatefromstring(base64_decode(image_blankpng()));
    imagealphablending($i,false);
    imagesavealpha($i,true);
    imagecopyresized($i,$b,0,0,0,0,$x,$y,imagesx($b),imagesy($b));
    return $i;
}

function image_blankpng()
{
    $c = "iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m";
    $c .= "dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqSURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCg";
    $c .= "dyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAAN";
    $c .= "egcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQ";
    $c .= "oHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAA";
    $c .= "DXoHAgTQoHcgQAANegcCBNCgdyBAgAEAMpcDTTQWJVEAAAAASUVORK5CYII=";

    return $c;
} 

哪個應該做您所需要的。 只需將函數調用替換為imagecreatetruecolor(400,160); 與image_createtruecolortransparent(400,160); 並同時包含這兩個功能。

該頁面在PHP在線手冊中非常有用: http : //us2.php.net/manual/en/function.imagecolortransparent.php#89927 我鏈接到一個特定的評論,但是至少看看其中的大多數始終是一個好主意。

暫無
暫無

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

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