2017-04-18 1 views
10

alphaPNG으로 만들려고합니다. 나는 imagepng()으로 이것을하고있다. 내 문제가 alpha 수익률 만 0은imagepng()으로 만든 PNG에서 알파 가져 오기

알파와 PNG를 만들기위한 내 코드

$x = 1; 
$y = 1; 
$gd = imagecreatetruecolor($x, $y); 
imagesetpixel($gd, 0,0, imagecolorallocatealpha($gd, 200,200,200,1)); 
imageAlphaBlending($gd, false); 
imageSaveAlpha($gd, true); 
imagepng($gd,"test.png"); 
imagedestroy($gd); 

PNG 알파를 읽어 내 코드

$im = imagecreatefrompng("test.png"); 
$rgb = imagecolorat($im, 0, 0); 
$colors = imagecolorsforindex($im, $rgb); 
$red = (int) $colors["red"]; 
$blue = (int) $colors["blue"]; 
$green = (int) $colors["green"]; 
$alpha = (int) $colors["alpha"]; // return only 0 

난 이유를 모르겠어 0을 반환하고 1을 반환하지 않습니다.

답변

7

You sh imagesetpixel를 호출하기 전에 imageSaveAlphaimageSaveAlpha 전화 울드 :

imageAlphaBlending($gd, false); 
imageSaveAlpha($gd, true); 
imagesetpixel($gd, 0,0, imagecolorallocatealpha($gd, 200,200,200,1)); 
+0

니스 솔루션이입니다! 고맙습니다. 쉬웠 어 :-) !!! –

1

프랭크,

여기

코드

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
     <title>Test</title> 

    </head> 
    <body> 

     <a href="index.php" class="navbar-brand"> 
      <?php 
      $x = 1; 
      $y = 1; 
      $gd = imagecreatetruecolor($x, $y); 
      imageAlphaBlending($gd, false); 
      imageSaveAlpha($gd, true); 
      imagesetpixel($gd, 0, 0, imagecolorallocatealpha($gd, 200, 200, 200, 1)); 
      imagepng($gd, 'img/logo.png" '); 
      imagedestroy($gd); 

      $im = imagecreatefrompng('img/logo.png'); 
      $rgb = imagecolorat($im, 0, 0); 
      $colors = imagecolorsforindex($im, $rgb); 
      $red = (int) $colors["red"]; 
      $blue = (int) $colors["blue"]; 
      $green = (int) $colors["green"]; 
      echo $alpha = (int) $colors["alpha"]; // return only 0 
      ?> 
     </a> 

    </body> 
</html> 
관련 문제