一直的项目都没有给图片添加水印的功能,今天自己学习学习,顺便整理了一下,当做笔记了。
简单来说给图片添加图片水印有四个步骤:
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()
给图片添加图片水印可以这样实现,我就整理了这些!希望有用