php gd png透明,用PHP透明GD库处理图片(1) | 学步园

创作时间:2004年5月7日 19:00~22:30

//补充完善版本是在2004-05-10 12:00完成的。感谢PASiO提供帮助:“透明的PNG图片即可而且没有白色杂点

7b50bdb860865daaef41ad69cd98ad34.gif ”。

//****************************************************************************************

//已知问题:1)使用Png文件格式没有问题,其他图片颜色会有杂点,也就是无法干净镂空Logo图片。

//     2)Png文件不能使用Photoshop生成,而要用Firework MX以上的版本,Firework3.0经测试不可以。

//****************************************************************************************

//----------------------------------------函数参数说明------------------------------------

//

//变量         含义               类型

//$dst_im       目标图像             resource

//$src_im       源图像               resource

//$dst_x         目标图像x坐标         int

//$dst_y         目标图像y坐标         int

//$dst_w         目标图像宽度           int

//$dst_h         目标图像高度           int

//$src_w         源图像宽度           int

//$src_h         源图像高度           int

//$tran_color     期望的源图像中透明的颜色   int

//$alpha         透明度设定值(0~127)     int

//

//****************************************************************************************

function imagealphacopy($dst_im,$src_im,$dst_x,$dst_y,$dst_w,$dst_h,$src_w,$src_h,$tran_color,$alpha)

{

//判断是否越界

if (($src_w+$dst_x)>$dst_w)

{

return(false);

}

if (($src_h+$dst_y)>$dst_h)

{

return(false);

}

//判断完毕!

imagealphablending($dst_im,true);

for ($j=0;$j<=$src_h-1;$j++)

{

for ($i=0;$i<=$src_w-1;$i++)

{

$rgb = imagecolorat($src_im,$i,$j);

$r = ($rgb >> 16) & 0xFF;

$g = ($rgb >> 8) & 0xFF;

$b = $rgb & 0xFF;

$now_color=imagecolorallocate($dst_im,$r,$g,$b);

if ($now_color==$tran_color)

{

continue;

}

else

{

//echo $now_color."
";

$color=imagecolorallocatealpha($dst_im,$r,$g,$b,$alpha);

imagesetpixel($dst_im,$dst_x+$i,$dst_y+$j,$color);

}

}

}

}

$im_in=imagecreatefrompng("in.png");

$insize=getimagesize("in.png");

$im_out=imagecreatefromjpeg("out.jpg");

$outsize=getimagesize("out.jpg");

$white=imagecolorallocate ($im_out,255,255,255);

imagealphacopy($im_out,$im_in,70,180,$outsize[0],$outsize[1],$insize[0],$insize[1],$white,75);

imagepng($im_out,"large.png");

imagedestroy($im_in);

imagedestroy($im_out);

?>

large.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值