2013-09-21 57 views
0

我有一个PNG,我想添加透明度。使PNG透明 - PHP

我该怎么做?我不知道。

我的初始情况如下:

  1. 用户上传的JPEG文件。
  2. 我用下面的代码

    $image = imagecreatefromjpeg('546654465456456_background_main.jpg'); 
    imagealphablending($image, true); 
    
    $bottom = imagecreatetruecolor(1280,720); 
    imagecopyresampled($bottom,$image,0,0,0,0,1280,720,1280,720); 
    imagealphablending($bottom, true); 
    imagesavealpha($bottom,true); 
    
    imagepng($bottom, 'trans.png', 1);
  3. 现在我想将50%的透明度添加到图像中创建一个png图片。< ---这里的问题是

问候 迈克尔Gohl

+0

这可以帮助您http://stackoverflow.com/a/76499 487334分之42 –

回答

0

试试这个

<?php 
function filter_opacity(&$img, $opacity) //params: image resource id, opacity in percentage (eg. 80) 
     { 
      if(!isset($opacity)) 
       { return false; } 
      $opacity /= 100; 

      //get image width and height 
      $w = imagesx($img); 
      $h = imagesy($img); 

      //turn alpha blending off 
      imagealphablending($img, false); 

      //find the most opaque pixel in the image (the one with the smallest alpha value) 
      $minalpha = 127; 
      for($x = 0; $x < $w; $x++) 
       for($y = 0; $y < $h; $y++) 
        { 
         $alpha = (imagecolorat($img, $x, $y) >> 24) & 0xFF; 
         if($alpha < $minalpha) 
          { $minalpha = $alpha; } 
        } 

      //loop through image pixels and modify alpha for each 
      for($x = 0; $x < $w; $x++) 
       { 
        for($y = 0; $y < $h; $y++) 
         { 
          //get current alpha value (represents the TANSPARENCY!) 
          $colorxy = imagecolorat($img, $x, $y); 
          $alpha = ($colorxy >> 24) & 0xFF; 
          //calculate new alpha 
          if($minalpha !== 127) 
           { $alpha = 127 + 127 * $opacity * ($alpha - 127)/(127 - $minalpha); } 
          else 
           { $alpha += 127 * $opacity; } 
          //get the color index with new alpha 
          $alphacolorxy = imagecolorallocatealpha($img, ($colorxy >> 16) & 0xFF, ($colorxy >> 8) & 0xFF, $colorxy & 0xFF, $alpha); 
          //set pixel with the new color + opacity 
          if(!imagesetpixel($img, $x, $y, $alphacolorxy)) 
           { return false; } 
         } 
       } 
      return true; 
     } 
?> 

和使用这样

$image = imagecreatefrompng("img.png"); 
filter_opacity($image, 75);