创作时间:2004年5月7日 19:00~22:30
//补充完善版本是在2004-05-10 12:00完成的。感谢PASiO提供帮助:“透明的PNG图片即可而且没有白色杂点
”。
//****************************************************************************************
//已知问题: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);
?>