给图片添加图片水印

一直的项目都没有给图片添加水印的功能,今天自己学习学习,顺便整理了一下,当做笔记了。

简单来说给图片添加图片水印有四个步骤:

1、加载水印以及要加水印的图像(创建新图象);

2、设置水印图像的外边距,并且获取水印图像的尺寸;

3、利用图像的宽度和水印的外边距计算位置,并且将水印复制到图像上;

4、输出图像并释放内存

举个两个简单的例子,例1:

<?php
// 加载水印以及要加水印的图像
$stamp  =  imagecreatefrompng ( 'stamp.png' );
$im  =  imagecreatefromjpeg ( 'photo.jpg' );
// 设置水印图像的外边距,并且获取水印图像的尺寸
$marge_right  =  0 ;
$marge_bottom  =  0 ;
$sx  =  imagesx ( $stamp );
$sy  =  imagesy ( $stamp );

// 利用图像的宽度和水印的外边距计算位置,并且将水印复制到图像上
$x = (imagesx ( $im ) -  $sx  -  $marge_right)/2;
$y = (imagesy ( $im ) -  $sy  -  $marge_bottom)/2;
imagecopy ( $im ,  $stamp ,  $x ,  $y ,  0 ,  0 ,  imagesx ( $stamp ),  imagesy ( $stamp ));
// 输出图像
header ( 'Content-type: image/png' );//如果要保存加了水印的图片就不要加这行代码l
imagepng ( $im );//如果好保存加了水印的图片,在$im后面加个保存路径参数,如:imagepng ($im, 'photo.png');
//释放内存
imagedestroy ( $im );

例2:

<?php  
/*打开图片*/  
//1.配置图片路径  
$src = "bg.jpg";  
//2.获取图片信息  
$info = getimagesize($src);  
//3.通过编号获取图像类型  
$type = image_type_to_extension($info[2],false);  
//4.在内存中创建和图像类型一样的图像  
$fun = "imagecreatefrom".$type;  
//5.图片复制到内存  
$image = $fun($src);  
  
/*操作图片*/  
//1.设置字体的路径  
$font = "msyh.ttf";  
//2.填写水印内容  
$content = "水印文字♂some special words are supported.";  
//3.设置字体颜色和透明度  
$color = imagecolorallocatealpha($image, 50, 50, 50, 50);  
//4.写入文字  
imagettftext($image, 20, 0, 0, 30, $color, $font, $content);  
/*输出图片*/  
//浏览器输出  
header("Content-type:".$info['mime']);  
$fun = "image".$type;  
$fun($image);  
//保存图片  
$fun($image,'bg_res.'.$type);  
/*销毁图片*/  
imagedestroy($image);  

第一步加载图像(创建图像)可用的函数:

1、由文件或 URL 创建一个新图象

imagecreatefromgif()、imagecreatefromjpeg()、imagecreatefrompng()、imagecreatefromwbmp()、imagecreatefromwebp()、imagecreatefromxbm()、imagecreatefromxpm()

2、从 GD 文件或 URL 新建一图像

imagecreatefromgd()

3、从给定的 GD2 文件或 URL 中的部分新建一图像

imagecreatefromgd2()、imagecreatefromgd2part()

4、从字符串中的图像流新建一图像

imagecreatefromstring()

第三步将水印复制到图像上,使用的函数imagecopy($dst_im$src_im$dst_x$dst_y$src_x$src_y$src_w$src_h),说下这个函数的参数:

$dst_im 在这张图上架水印;

$src_im作为水印的图;

$src_im水印图放在$dst_im坐标为$dst_x$dst_y的位置上;

复制$src_im水印图的开始坐标$src_x$src_y

复制$src_im水印图的宽$src_w和高$src_h

注:图片的左上角坐标为(0,0)

最后输出图像,格式怎样的话,看需求吧!可用函数:

imagegif()、imagejpeg()、imagepng()、imagewbmp()、imagewebp()、imagexbm()、imagegd()、imagegd2()

给图片添加图片水印可以这样实现,我就整理了这些!希望有用微笑

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值