PHP实现给图片加图片水印
一、开发环境
1、Windows+Apache+MySQL+PHP的环境。
2、文本编辑器:Sublime。
二、主要技术
PHP+HTML+CSS
三、效果图与具体步骤
实现效果图,如图1所示。
图1 效果图
3.1、界面设计
(1)创建php文件和文件夹
创建一个名为“shuiyin_image.php”的PHP文件用来实现加图片水印的功能。
创建一个名为“images”的文件夹用来存放原图片和加过水印的图片。
(2)界面设计
<formaction="shuiyin.php" method="post">
<tableborder="2px solid #CCCCCC">
<td>
请选择要添加水印的图片:<select name="picname[]">
<option>./images/ch.jpg</option>
<option>./images/mn.jpg</option>
<option>./images/xm.jpg</option>
</select>
</td>
<td>
<input type="submit"name="sub" value="查看效果图">
</td>
</tr>
<trheight="240px">
<td colspan="2">
<!—添加水印的功能代码-->
</td>
</tr>
</table>
</form>
3.2、实现添加图片水印的功能
(1)创建一个添加图片水印函数
/**
* 为一张图片添加上一个logo图片水印(以保存的方式实现)
* @param string $picname 被处理图片源
* @param string $logo 水印图片
* @param string $pre 处理后图片名的前缀名
* @return String 返回后的图片名称(带路径),如a.jpg=>n_a.jpg
*/
functionimageUpdateLogo($picname,$logo,$pre="shuiyin_"){
$picnameinfo= getimageSize($picname); //获取图片源的基本信息
$logoinfo= getimageSize($logo); //获取logo图片的基本信息
//var_dump($logoinfo);
//根据图片类型创建出对应的图片源
switch($picnameinfo[2]){
case 1: //gif
$im =imagecreatefromgif($picname);
break;
case 2: //jpg
$im =imagecreatefromjpeg($picname);
break;
case 3: //png
$im =imagecreatefrompng($picname);
break;
default:
die("图片类型错误!");
}
//根据logo图片类型创建出对应的图片源
switch($logoinfo[2]){
case 1: //gif
$logoim = imagecreatefromgif($logo);
break;
case 2: //jpg
$logoim = imagecreatefromjpeg($logo);
break;
case 3: //png
$logoim =imagecreatefrompng($logo);
break;
default:
die("logo图片类型错误!");
}
//执行图片水印处理
imagecopyresampled($im,$logoim,$picnameinfo[0]-$logoinfo[0],$picnameinfo[1]-$logoinfo[1],0,0,$logoinfo[0],$logoinfo[1],$logoinfo[0],$logoinfo[1]);
//输出图像(根据源图像的类型,输出为对应的类型)
$picinfo =pathinfo($picname);//解析源图像的名字和路径信息
$newpicname=$picinfo["dirname"]."/".$pre.$picinfo["basename"];
switch($picnameinfo[2]){
case 1:
imagegif($im,$newpicname);
break;
case 2:
imagejpeg($im,$newpicname);
break;
case 3:
imagepng($im,$newpicname);
break;
}
//释放图片资源
imagedestroy($im);
imagedestroy($logoim);
return$newpicname;
}
(2)调用函数,输出添加水印后的图片
if(isset($_POST['sub'])){
$picnames=$_POST['picname']; // 源图名称
$picname=$picnames[0];
$newimage=imageUpdateLogo("$picname","./images/cz.jpeg");
// 在页面中输出加水印后图片
echo "<center><imgsrc='$newimage' style='width:320px;height:200px'></center>";
}
四、网页测试
开启Apache服务器后,打开浏览器,在浏览器地址栏中输入文件地址,例如:
“localhost:8080/image_deal/shuiyin_image.php”可以看到如图2所示的界面。
图2 项目结果图
然后选择一张要进行添加水印的图片,点击“查看效果图”,可以看到如图3所示的添加水印后的图片。
图3 验证结果图
并且在images文件夹中也可以看到生成的加水印图片。说明测试成功。