我有一个PNG,我想添加一个透明度。
我该怎么做?我不知道。
我最初的情况如下:
我使用以下代码
创建一个png图像$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 );
现在我想为图片添加50%的透明度。 < ---这是问题
最诚挚的问候 Michael Gohl
答案 0 :(得分: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 );