分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > IT知识

php对图片加水印--将一张图片作为水印加到另一张图片

发布时间:2023-09-06 01:47责任编辑:林大明关键词:暂无标签

代码如下:

/** ??? * 图片加水印(适用于png/jpg/gif格式) ??? * ??? * @param $srcImg  原图片 ??? * @param $waterImg 水印图片 ??? * @param $savepath 保存路径 ??? * @param $savename 保存名字 ??? * @param $positon  水印位置:1:顶部居左, 2:顶部居右, 3:居中, 4:底部局左, 5:底部居右 ??? * @param $alpha   透明度:0:完全透明, 100:完全不透明 ??? * ??? * @return 成功 -- 加水印后的新图片地址 ??? *   失败 -- -1:原文件不存在, -2:水印图片不存在, -3:原文件图像对象建立失败,-4:水印文件图像对象建立失败 -5:加水印后的新图片保存失败 ??? */ ???function water_mark($srcImg, $waterImg, $savepath=null, $savename=null, $positon=1, $alpha=50){ ???????//判断文件是否存在 ???????$srcImgInfo = @getimagesize($srcImg); ???????if(!$srcImgInfo){ ???????????return -1; ???????} ???????$waterImgInfo = @getimagesize($waterImg); ???????if(!$waterImgInfo){ ???????????return -1; ???????} ???????//建立图像对象 ???????$srcImgObj = image_create_from_ext($srcImg, $srcImgInfo[2]); ???????if(!$srcImgObj){ ???????????return -3; //原文件图像对象建立失败 ???????} ???????$waterImgObj = image_create_from_ext($waterImg, $waterImgInfo[2]); ???????if(!$waterImgObj){ ???????????return -4; //原文件图像对象建立失败 ???????} ???????//准备信息:保存路径,保存文件名 ???????$temp = pathinfo($srcImg); ???????$name = $temp[‘basename‘]; ???????$path = $temp[‘dirname‘]; ???????$ext ?= $temp[‘extension‘]; ???????$savename = $savename ? $savename : $name; ???????$savepath = $savepath ? $savepath : $path; ???????$savefile = $savepath .‘/‘. $savename; ???????//确定生成水印的位置 ???????switch($positon){ ???????????//1顶部居左 ???????????case 1: ????????????????$x=$y=0; ????????????????break; ???????????//2顶部居右 ???????????case 2: ????????????????$x = $srcImgInfo[0]-$waterImgInfo[0]; $y = 0; ????????????????break; ???????????//3居中 ???????????case 3: ????????????????$x = ($srcImgInfo[0]-$waterImgInfo[0])/2; $y = ($srcImgInfo[1]-$waterImgInfo[1])/2; ????????????????break; ???????????//4底部居左 ???????????case 4: ????????????????$x = 0; $y = $srcImgInfo[1]-$waterImgInfo[1]; ????????????????break; ???????????//5底部居右 ???????????case 5: ????????????????$x = $srcImgInfo[0]-$waterImgInfo[0]; $y = $srcImgInfo[1]-$waterImgInfo[1]; ????????????????break; ??????????? default: ????????????????$x=$y=0; ????????} ???????//添加水印图片 ???????imagecopymerge($srcImgObj, $waterImgObj, $x, $y, 0, 0, $srcImgInfo[0]/2, $srcImgInfo[1]/2, $alpha); ???????//输出图片 ???????switch ($srcImgInfo[2]) { ???????????case 1: ????????????????imagegif($srcImgObj, $savefile); ????????????????break; ???????????case 2: ????????????????imagejpeg($srcImgObj, $savefile); ????????????????break; ???????????case 3: ????????????????imagepng($srcImgObj, $savefile); ????????????????break; ???????????default: ????????????????return -5; //保存失败 ???????} ???????//销毁图像资源 ???????imagedestroy($srcImgObj); ???????imagedestroy($waterImgObj); ???????return $savefile; ???} ???/* ???* 创建图像对象 ???* @param $imgFile 图片路径 ???* @param $imgExt ?图片扩展名 ???* @return $im 图像对象 ???**/ ???function image_create_from_ext($imgFile, $imgExt){ ???????$im = null; ???????switch ($imgExt) { ???????????case 1: ????????????????$im=imagecreatefromgif($imgFile); ???????????????break; ???????????case 2: ????????????????$im=imagecreatefromjpeg($imgFile); ???????????????break; ???????????case 3: ????????????????$im=imagecreatefrompng($imgFile); ???????????????break; ???????} ???????return $im; ???}

调用方法:

//调用测试 ???$res = water_mark(‘F:\test\test1.jpg‘, ‘F:\test\logo.png‘, null, ‘res.jpg‘); ???var_dump($res);

php对图片加水印--将一张图片作为水印加到另一张图片

原文地址:https://www.cnblogs.com/wxdblog/p/8658724.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved