2013-05-12 72 views
1

我有一個帶有透明背景的白色圖標(256x256)。不知何故,我希望能夠將白色圖標(其中包含一些透明像素(用於抗鋸齒))更改爲任何RGB顏色。在PHP中爲白色圖標添加顏色GD

我曾嘗試使用下面的功能,但

imagefilter($im, IMG_FILTER_COLORIZE, 0, 255, 0)

有沒有辦法在PHP GD做這個嘗試?我可以查看哪些功能?

+0

這可能有助於保持透明度(看起來像問題):http://stackoverflow.com/questions/5276939/using-gd-to-change-the-color-of-one -color-形狀上一個透明背景-WH – nickhar 2013-05-12 15:51:21

回答

0

我剛剛創建了下面的代碼,它可以創造奇蹟。

當心:如果設置$ backgroundTransparent爲false,當背景下它畫的圖像可能會失去質量。

<?php 

    $width = 256; 
    $height = 256; 

    $backgroundColor = array(0, 255, 0); 
    $backgroundTransparent = true; 

    $icon = imagecreatefrompng('Access-New.png'); 
    imagealphablending($icon, false); 
    imagesavealpha($icon, true); 

    imagefilter($icon, IMG_FILTER_BRIGHTNESS, -255); 
    imagefilter($icon, IMG_FILTER_COLORIZE, 255, 0, 0); 

    if($backgroundTransparent == false) { 
     $background = imagecreatetruecolor($width, $height); 

     imagefill($background, 0, 0, imagecolorallocate($background, $backgroundColor[0], $backgroundColor[1], $backgroundColor[2])); 

     imagealphablending($icon, true); 

     imagecopy($background, $icon, 0, 0, 0, 0, $width, $height); 

     imagepng($background, NULL, 0, PNG_NO_FILTER); 
    } 
    else { 
     imagepng($icon, NULL, 0, PNG_NO_FILTER); 
    } 

    header("Content-type: image/png"); 
    imagedestroy($background); 
?>