老师讲的有一个问题
用imagecopymerge();函数是混合模式的,将两个图片混合了,所以png图片的透明效果就没了
用imagecopy();函数直接合并,所有最后保留了透明效果。
用imagecopymerge();函数是混合模式的,将两个图片混合了,所以png图片的透明效果就没了
用imagecopy();函数直接合并,所有最后保留了透明效果。
2015-05-02
我的代码都实验过的,,同学,,我没有实验过,也不可能去回答的,,
<?php //这是整体代码 $src='images/001.jpg'; $info=getimagesize($src); $type=image_type_to_extension($info[2],false); $fun="imagecreatefrom{$type}"; $image=$fun($src); /*操作水印图片*/ //1.设置水印路径 $imageMark='images/logo.png'; //2.获取水印图片基本信息 $info2=getimagesize($imageMark); //3.获取水印图片类型 $type2=image_type_to_extension($info2[2],false); //4.创建水印图像类型 $fun2="imagecreatefrom{$type2}"; //5.把水印图片复制到内存中 $water=$fun2($imageMark); //6.合并图片当最后一个参数设置为100时和imagecopy一样 imagecopymerge($image, $water, 20, 30, 0, 0, $info2[0], $info2[1],20); //imagecopy($image, $water, 20, 30, 0, 0, $info2[0], $info2[1]); //7.销毁水印图片; imagedestroy($water); /*输出图片*/ header('Content-type:'.$info['mime']); $func="image{$type}"; $func($image); imagedestroy($image); ?>
imagecopymerge($image, $water, 20, 30, 0, 0, $info2[0], $info2[1],20); //最后一个参数为20时效果如下:
imagecopymerge($image, $water, 20, 30, 0, 0, $info2[0], $info2[1],50); //最后一个参数时50时的效果:
imagecopymerge($image, $water, 20, 30, 0, 0, $info2[0], $info2[1],100); //最后一个参数时100时的效果:
imagecopy($image, $water, 20, 30, 0, 0, $info2[0], $info2[1]); //使用imagecopy()的效果
所以:最后我得出的结论时:
imagecopymerge()最后一个参数是设置png图片不透明部分复制到目标图片时的透明度的吧,
当它的最后一个参数等于100时,和imagecopy()是一样的,,
php官方手册的说法是:
bool imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )
将 src_im 图像中坐标从 src_x,src_y 开始,宽度为 src_w,高度为 src_h 的一部分拷贝到 dst_im 图像中坐标为 dst_x 和 dst_y 的位置上。两图像将根据 pct 来决定合并程度,其值范围从 0 到 100。当 pct = 0 时,实际上什么也没做,当为 100 时对于调色板图像本函数和 imagecopy() 完全一样,它对真彩色图像实现了 alpha 透明。
最后:因为学习这个课程好久了,,如果有错误望指出,,大家一起学习,
举报