2013-10-11 66 views
0

第一:我想創建一個PNG圖像並在其中繪製一個形狀。此PNG透明圖像生成器有什麼問題?背景是黑色

第二個:重疊另一個圖像上的第一個PNG(例如一個jpg圖像) 問題是:當我創建第一個帶有內部形狀的PNG(背景不透明並且很暗),因此這會使黑色在第二張圖像上重疊。

我該如何解決?

我不太喜歡圖像功能,所以我遇到了麻煩。

備註:我需要創建第一個透明PNG,然後在第二個圖像上重疊它。我不想直接在第二張圖像上創建形狀。

和代碼:

<?php 

    define('EXAMPLE_TMP_SERVERPATH', ''); 
    define('EXAMPLE_TMP_URLRELPATH', ''); 


    $tempDir = EXAMPLE_TMP_SERVERPATH; 
    $fileName = 'test3img.png'; 


    $imgW = 125; 
    $imgH = 125; 

    # First 
    $base_image = imagecreatetruecolor($imgW, $imgH); 

    $black = imagecolorallocate($base_image, 0, 0, 0); 
    imagecolortransparent($base_image, $black); 
    $col[0] = imagecolortransparent($base_image, $black); 

    imagealphablending($base_image, true); 
    imagesavealpha($base_image, true); 


    imagefill($base_image, 0, 0, $col[0]); 

    imagefilledrectangle($base_image, 4, 4, 50, 25, 255); 

    imagepng($base_image, $tempDir.$fileName); 


# First2 
$target_image = imagecreatetruecolor($imgW*5, $imgH*5); 
$black2 = imagecolorallocatealpha($base_image, 0, 0, 0, 127); 
imagecolortransparent($target_image, $black2); 

imagecopyresized($target_image, $base_image, 0, 0, 0, 0,$imgW, $imgH, $imgW, $imgH); 
imagedestroy($base_image); 
imagepng($target_image, $tempDir.$fileName); 
imagedestroy($target_image); 
# First2 

    # Second  
    $dest = imagecreatefromjpeg('../avatar.jpg'); 
    $src = imagecreatefrompng(EXAMPLE_TMP_URLRELPATH.$fileName); 


    imagealphablending($dest, true); 
    imagesavealpha($dest, true); 

    imagealphablending($src, true); 

    imagecopyresampled(
         $dest, 
         $src, 
         0,0, 
         0,0, 
         200, 200, 
         125, 125 
        ); 

    imagepng($dest, EXAMPLE_TMP_URLRELPATH.'_m.jpeg'); 

    imagedestroy($dest); 
    imagedestroy($src); 

?> 
+0

我也想讓形狀透明太 – OceanOne

回答

1

需要補充的alpha通道太: Alpha Channel

+0

你能幫我多嗎? – OceanOne

+1

更改:$ black = imagecolorallocate($ base_image,0,0,0);到:$ black = imagecolorallocatealpha($ base_image,0,0,0,127);試試這個,回到我身邊。 –

+0

適用於我添加的第一個代碼,但我忘了添加代碼的一部分並將其添加爲first2的一部分。第一個和第二個工作正常。但在first2第二個PNG是不透明的,是黑色的 – OceanOne