让我们一起爱米兰
站内搜搜:
移动设备
请扫描二维码
或访问
m.milan100.com
您所在的位置 -> 米兰百分百 -> PHP -> php合并图片背景png透明

php合并图片背景png透明

点击数:1526 发表时间:2018-01-04 22:09:24 作者: 来源链接:
分享到:
分享到微信

php合并图片背景png透明的代码:

/**
 * 拼接图片
 * $photo:边框内的图片绝对路径:win:E:\xamp\htdocs\news\images/pic.png 
 *                           linux:/usr/local/apache/htdocs/site/images/pic.png
 * $kuang:边框路径:与$photo格式相同
 */
function spliceImage($photo,$kuang){
    //将两幅图分别取到两个画布中
    $image_kuang = imagecreatefrompng($kuang);
    $image_photo = imagecreatefromjpeg($photo);
    //创建一个新的,和大图一样大的画布
    $image_3     = imageCreatetruecolor(imagesx($image_kuang),imagesy($image_kuang));
    //为真彩色画布创建白色背景,再设置为透明
    $color = imagecolorallocate($image_3, 255, 255, 255);
    imagefill($image_3, 0, 0, $color);
    imageColorTransparent($image_3, $color);
    /**
     * 制作水印的方法
     * 先copy框再copy图片 这就添加水印的方法,先复制大图,再复制小图,小图覆盖大图
    imagecopyresampled($image_3,$image_kuang,0,0,0,0,imagesx($image_kuang),imagesy($image_kuang),imagesx($image_kuang),imagesy($image_kuang));
    imagecopymerge($image_3,$image_photo, 21,77,0,0,imagesx($image_photo),imagesy($image_photo), 100);
    **/
       
    /**
     * 先copy图片,再copy画框,实现png的透明效果,将图片嵌入到画框里
     *  imagecopymerge与imagecopy的不同:
     *  imagecopymerge 函数可以支持两个图像叠加时,设置叠加层的透明度。imagecopymerge比imagecopy多一个参数,来设置透明度
     *                  PHP内部源码里,imagecopymerge在透明度参数为100时,直接调用imagecopy函数。
     *  imagecopy 函数则不支持叠加透明,但拷贝时可以保留png图像的原透明信息,而imagecopymerge却不支持图片的本身的透明拷贝
     *  即:使用imagecopymerge函数,可以实现打上透明度为30%的淡淡的水印图标,但图片本身的png就会变得像IE6不支持png透明那样,背景不透明了。
     *  如果使用imagecopy函数,可以保留图片本身的透明信息,但无法实现30%的淡淡水印叠加,
     */
    imagecopyresampled($image_3,$image_photo,12,12,0,0,imagesx($image_photo),imagesy($image_photo),imagesx($image_photo),imagesy($image_photo));
    //imagecopymerge($image_3,$image_kuang, 0,0,0,0,imagesx($image_kuang),imagesy($image_kuang), 70);
    imagecopy($image_3,$image_kuang, 0,0,0,0,imagesx($image_kuang),imagesy($image_kuang));
    //获得要保存的文件名
    $photoArray =   explode('/',$photo);
    $fileName   =   explode('.',end($photoArray));
    $fileName   =   $fileName[0].'_n.png';
    //将图片保存为png格式
    //存储图片路径
    $newImage   =   "images/".$fileName;
    imagepng($image_3, $newImage);
    //返回图片路径
    $imageUrl   =   "images/".$fileName;
    return $imageUrl;
}
$ttt = spliceImage('images/222.jpg','images/222.png');
echo $ttt;
echo '<img src="images/222_n.png"/>';
echo '<style>body{background:gray;}</style>';


0
很 好
0
一 般
0
差 劲
热门新闻
相关文章
上一篇: 腾讯邮箱超时Swift_TransportException in StreamBuff
下一篇: php发送邮件类
评论区
匿名

返回首页 | 收藏本页 | 回到顶部
Copyright 2010. 米兰百分百 Powered By Bridge.
京ICP备15050557号