给图片加水印的具体做法Word文件下载.docx

上传人:b****4 文档编号:17838316 上传时间:2022-12-11 格式:DOCX 页数:11 大小:19.41KB
下载 相关 举报
给图片加水印的具体做法Word文件下载.docx_第1页
第1页 / 共11页
给图片加水印的具体做法Word文件下载.docx_第2页
第2页 / 共11页
给图片加水印的具体做法Word文件下载.docx_第3页
第3页 / 共11页
给图片加水印的具体做法Word文件下载.docx_第4页
第4页 / 共11页
给图片加水印的具体做法Word文件下载.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

给图片加水印的具体做法Word文件下载.docx

《给图片加水印的具体做法Word文件下载.docx》由会员分享,可在线阅读,更多相关《给图片加水印的具体做法Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。

给图片加水印的具体做法Word文件下载.docx

"

$waterText="

$textFont=5,$textColor="

#234567"

{

$isWaterImage=FALSE;

$formatMsg="

暂不支持该文件格式,请用图片处理软件将图片转换为GIF、JPG、PNG格式。

;

//读取水印文件

if(!

empty($waterImage)&

&

file_exists($waterImage)){

$isWaterImage=TRUE;

$water_info=getimagesize($waterImage);

/*

*getimagesize($waterImage)

*解释:

*这里$arr为一个数组类型

*$arr[0]为图像的宽度

*$arr[1]为图像的高度

*$arr[2]为图像的格式,包括jpg、gif和png等

*$arr[3]为图像的宽度和高度,内容为width="

xxx"

height="

yyy"

*/

$water_w=$water_info[0];

//取得水印图片的宽

$water_h=$water_info[1];

//取得水印图片的高

switch($water_info[2]){//取到水印图片的格式

case1:

$water_image=imagecreatefromgif($waterImage);

break;

case2:

$water_image=imagecreatefromjpeg($waterImage);

case3:

$water_image=imagecreatefrompng($waterImage);

default:

die($formatMsg);

}

}

//读取背景图片

if(file_exists($backImage)&

!

empty($backImage)){

$back_info=getimagesize($backImage);

$back_w=$back_info[0];

//取得背景图片的宽

$back_h=$back_info[1];

//取得背景图片的高

switch($back_info[2]){//取到水印图片的格式

$back_image=imagecreatefromgif($backImage);

$back_image=imagecreatefromjpeg($backImage);

$back_image=imagecreatefrompng($backImage);

}else{

die('

需要加水印的图片不存在!

'

);

//水印位置

if($isWaterImage){//图片水印

//图片型水印

$w=$water_w;

$h=$water_h;

$label="

图片的"

//文字型的水印

$temp=imagettfbbox(ceil($textFont*2.5),0,"

C:

\WINDOWS\Fonts\SIMLI.TTF"

$waterText);

*ceil()函数向上舍入为最接近的整数。

*

*imagettfbbox函数的坐标系统的认识

*写TTF文字到图中。

*语法:

arrayImageTTFBBox(intsize,intangle,stringfontfile,stringtext);

*返回值:

数组

*函数种类:

图形处理

*内容说明

*本函数将TTF(TrueTypeFonts)字型文字写入图片。

*参数size为字形的尺寸;

angle为字型的角度,顺时针计算,0度为水平,也就是三点钟的方向(由左到右),90度则为由下到上的文字;

*x,y二参数为文字的坐标值(原点为左下角);

参数col为字的颜色;

fontfile为字型文件名称,亦可是远端的文件;

*text当然就是字符串内容了。

返回值为数组,包括了八个元素,头二个分别为左下的x、y坐标,第三、四个为右下角的x、y坐标,第五、六及七、八二组分别为右上及左上的x、y坐标。

*注意的是欲使用本函数,系统要装妥GD及Freetype二个函数库。

*返回的内容如:

*0=>

2

*1=>

-1

*2=>

258

*3=>

*4=>

*5=>

-20

*6=>

*7=>

*//下面的是没用的:

*images_width=266

*images_height=29

*font_width=256

*font_height=19

*font_location_x=5

*font_location_y=-15

$w=$temp[2]-$temp[0];

$h=$temp[1]-$temp[7];

//也可以:

//$w=$temp[2]-$temp[6];

//$h=$temp[3]-$temp[7];

unset($temp);

文字的"

//检查水印图片的尺寸是否合适(背景图片必须在长宽上都要大于水印图片)

if(($back_h<

$h)||$back_w<

$w){

echo"

需要加水印的图片的长度或宽度比水印"

.$label."

还小,无法生成水印!

return;

//判断选择的水印位置在哪里

switch($waterPos){

case0:

//随机

$posX=rand(0,($back_w-$w));

$posY=rand(0,($back_h-$h));

break;

case1:

//1为顶端居左

$posX=0;

$posY=0;

case2:

//2为顶端居中

$posX=($back_w-$w)/2;

$posX=0;

case3:

//3为顶端居右

$posX=$ground_w-$w;

$posY=0;

break;

case4:

//4为中部居左

$posX=0;

$posY=($back_h-$h)/2;

case5:

//5为中部居中

$posX=($back_w-$w)/2;

case6:

//6为中部居右

$posX=$back_w-$w;

case7:

//7为底端居左

$posY=$back_h-$h;

case8:

//8为底端居中

case9:

//9为底端居右

$posY=$back_h-$h;

default:

$posX=rand(0,($back_w-$w));

//设定图像的混色模式

imagealphablending($back_image,TRUE);

/*

*intimagealphablending(resourceimage,boolblendmode)

*imagealphablending()允许在真彩色图像上使用两种不同的绘画模式。

*在混色(blending)模式,alpha通道色彩成分提供给所有的绘画函数,

*例如imagesetpixel()决定底层的颜色应在何种程度上被允许照射透过。

作为结果,

*GD自动将该点现有的颜色和绘画的颜色混合,并将结果储存在图像中。

*结果的像素是不透明的。

*在非混色模式,绘画颜色连同其alpha通道信息一起被拷贝,替换掉目标像素。

*混色模式在画调色板图像时不可用。

如果blendmode为TRUE,则启用混色模式,否则关闭。

*注:

本函数是PHP4.0.6添加的,需要GD2.0.1。

*/

if($isWaterImage)//图片型水印

{

imagecopy($back_image,$water_image,$posX,$posY,0,0,$water_w,$water_h);

//拷贝水印到目标文件

*imagecopy()

*imagecopy()函数用于拷贝图像或图像的一部分,成功返回TRUE,否则返回FALSE。

*语法:

*boolimagecopy(resourcedst_im,resourcesrc_im,intdst_x,intdst_y,intsrc_x,intsrc_y,intsrc_w,intsrc_h)

*参数说明:

参数说明

*dst_im目标图像

*src_im被拷贝的源图像

*dst_x目标图像开始x坐标

*dst_y目标图像开始y坐标,x,y同为0则从左上角开始

*src_x拷贝图像开始x坐标

*src_y拷贝图像开始y坐标,x,y同为0则从左上角开始拷贝

*src_w(从src_x开始)拷贝的宽度

*src_h(从src_y开始)拷贝的高度

else{

if(!

empty($textColor)&

(strlen($textColor)==7)){

$R=hexdec(substr($textColor,1,2));

$G=hexdec(substr($textColor,3,2));

$B=hexdec(substr($textColor,5));

*hexdec()函数把十六进制转换为十进制。

}else{

die("

水印文字颜色格式不正确!

imagestring($back_image,$textFont,$posX,$posY,$waterText,imagecolorallocate($back_image,$R,$G,$B));

*imagestring--水平地画一行字符串。

*intimagestring(resourceimage,intfont,intx,inty,strings,intcol)

*imagestring()用col颜色将字符串s画到image所代表的图像的x,y座标处(图像的左上角为0,0)。

如果font是1,2,3,4或5,则使用内置字体。

//生成水印后的图片

@unlink($backImage);

*unlink()函数删除文件。

*若成功,则返回true,失败则返回false。

switch($back_info[2]){

case1:

imagegif($back_image,$backImage);

/*

*ImageGIF

*建立GIF图型。

*语法:

intimagegif(intim,string[filename]);

*返回值:

整数

*函数种类:

*内容说明

*本函数用来建立一张GIF格式图形。

参数im为使用ImageCreate()所建立的图片代码。

参数filename可省略,

*若无本参数filename,则会将图片指接送到浏览器端,记得在送出图片之前要先送出使用Content-type:

image/gif的标头字符串(header)到浏览器端,以顺利传输图片。

*若要使用透明背景的GIF图,也就是GIF89a的格式,需要先使用ImageColorTransparent()配置透明背景。

*本函数产生的GIF图,由于有版权的问题,因此在商业上的使用还要多加考量。

*/

case2:

imagejpeg($back_image,$backImage);

imagepng($back_image,$backImage);

default:

die($errorMsg);

//释放内存

if(isset($water_info))

unset($water_info);

if(isset($water_image))

imagedestroy($water_image);

unset($back_info);

imagedestroy($back_image);

}

 

//-----------------------------------------------------------------------------

if(!

empty($_FILES)){

$filename=$_FILES['

imagefile'

]['

name'

];

if(copy($_FILES['

tmp_name'

],$filename)){

$waterImage="

logo.jpg"

//水印图片路径

imageWaterMake($filename,5,$waterImage);

echo"

imgsrc=\"

.$filename."

\"

border=\"

1\"

>

no"

formenctype="

multipart/form-data"

method="

post"

文件:

inputname="

imagefile"

type="

file"

br>

inputtype="

submit"

value="

上传"

/form>

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 政史地

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1