zoukankan
html css js c++ java
php 图片水印+文字水印函数,但是不能设置透明
<?
php
/*
* 功能:PHP图片水印 (水印支持图片或文字)
* 参数:
* $groundImage 背景图片,即需要加水印的图片,暂只支持GIF,JPG,PNG格式;
* $waterPos 水印位置,有10种状态,0为随机位置;
* 1为顶端居左,2为顶端居中,3为顶端居右;
* 4为中部居左,5为中部居中,6为中部居右;
* 7为底端居左,8为底端居中,9为底端居右;
* $waterImage 图片水印,即作为水印的图片,暂只支持GIF,JPG,PNG格式;
* $waterText 文字水印,即把文字作为为水印,支持ASCII码,不支持中文;
* $textFont 文字大小,值为1、2、3、4或5,默认为5;
* $textColor 文字颜色,值为十六进制颜色值,默认为#FF0000(红色);
*
* 注意:Support GD 2.0,Support FreeType、GIF Read、GIF Create、JPG 、PNG
* $waterImage 和 $waterText 最好不要同时使用,选其中之一即可,优先使用 $waterImage。
* 当$waterImage有效时,参数$waterString、$stringFont、$stringColor均不生效。
* 加水印后的图片的文件名和 $groundImage 一样。
* 作者:longware @ 2004-11-3 14:15:13
*/
function
imageWaterMark (
$groundImage
,
$waterPos
=
0
,
$waterImage
=
""
,
$waterText
=
""
,
$textFont
=
5
,
$textColor
=
"
#FF0000
"
){
$isWaterImage
=
FALSE
;
$formatMsg
=
"
暂不支持该文件格式,请用图片处理软件将图片转换为GIF、JPG、PNG格式。
"
;
//
读取水印文件
if
(
!
empty
(
$waterImage
)
&&
file_exists
(
$waterImage
))
{
$isWaterImage
=
TRUE
;
$water_info
=
getimagesize
(
$waterImage
);
$water_w
=
$water_info
[
0
];
//
取得水印图片的宽
$water_h
=
$water_info
[
1
];
//
取得水印图片的高
switch
(
$water_info
[
2
])
//
取得水印图片的格式
{
case
1
:
$water_im
=
imagecreatefromgif (
$waterImage
);
break
;
case
2
:
$water_im
=
imagecreatefromjpeg (
$waterImage
);
break
;
case
3
:
$water_im
=
imagecreatefrompng (
$waterImage
);
break
;
default
:
die
(
$formatMsg
);
}
}
//
读取背景图片
if
(
!
empty
(
$groundImage
)
&&
file_exists
(
$groundImage
))
{
$ground_info
=
getimagesize
(
$groundImage
);
$ground_w
=
$ground_info
[
0
];
//
取得背景图片的宽
$ground_h
=
$ground_info
[
1
];
//
取得背景图片的高
switch
(
$ground_info
[
2
])
//
取得背景图片的格式
{
case
1
:
$ground_im
=
imagecreatefromgif (
$groundImage
);
break
;
case
2
:
$ground_im
=
imagecreatefromjpeg (
$groundImage
);
break
;
case
3
:
$ground_im
=
imagecreatefrompng (
$groundImage
);
break
;
default
:
die
(
$formatMsg
);
}
}
else
{
die
(
"
需要加水印的图片不存在!
"
);
}
//
水印位置
if
(
$isWaterImage
)
//
图片水印
{
$w
=
$water_w
;
$h
=
$water_h
;
$label
=
"
图片的
"
;
}
else
//
文字水印
{
$temp
=
imagettfbbox (
ceil
(
$textFont
*
2.5
)
,
0
,
"
./1.ttf
"
,
$waterText
);
//
取得使用 TrueType 字体的文本的范围
$w
=
$temp
[
2
]
-
$temp
[
6
];
$h
=
$temp
[
3
]
-
$temp
[
7
];
unset
(
$temp
);
$label
=
"
文字区域
"
;
}
if
( (
$ground_w
<
$w
)
||
(
$ground_h
<
$h
) )
{
echo
"
需要加水印的图片的长度或宽度比水印
"
.
$label
.
"
还小,无法生成水印!
"
;
return
;
}
switch
(
$waterPos
)
{
case
0
:
//
随机
$posX
=
rand
(
0
,
(
$ground_w
-
$w
));
$posY
=
rand
(
0
,
(
$ground_h
-
$h
));
break
;
case
1
:
//
1为顶端居左
$posX
=
0
;
$posY
=
0
;
break
;
case
2
:
//
2为顶端居中
$posX
=
(
$ground_w
-
$w
)
/
2
;
$posY
=
0
;
break
;
case
3
:
//
3为顶端居右
$posX
=
$ground_w
-
$w
;
$posY
=
0
;
break
;
case
4
:
//
4为中部居左
$posX
=
0
;
$posY
=
(
$ground_h
-
$h
)
/
2
;
break
;
case
5
:
//
5为中部居中
$posX
=
(
$ground_w
-
$w
)
/
2
;
$posY
=
(
$ground_h
-
$h
)
/
2
;
break
;
case
6
:
//
6为中部居右
$posX
=
$ground_w
-
$w
;
$posY
=
(
$ground_h
-
$h
)
/
2
;
break
;
case
7
:
//
7为底端居左
$posX
=
0
;
$posY
=
$ground_h
-
$h
;
break
;
case
8
:
//
8为底端居中
$posX
=
(
$ground_w
-
$w
)
/
2
;
$posY
=
$ground_h
-
$h
;
break
;
case
9
:
//
9为底端居右
$posX
=
$ground_w
-
$w
;
$posY
=
$ground_h
-
$h
;
break
;
default
:
//
随机
$posX
=
rand
(
0
,
(
$ground_w
-
$w
));
$posY
=
rand
(
0
,
(
$ground_h
-
$h
));
break
;
}
//
设定图像的混色模式
imagealphablending (
$ground_im
,
true
);
if
(
$isWaterImage
)
//
图片水印
{
imagecopy (
$ground_im
,
$water_im
,
$posX
,
$posY
,
0
,
0
,
$water_w
,
$water_h
);
//
拷贝水印到目标文件
}
else
//
文字水印
{
if
(
!
empty
(
$textColor
)
&&
(
strlen
(
$textColor
)
==
7
) )
{
$R
=
hexdec
(
substr
(
$textColor
,
1
,
2
));
$G
=
hexdec
(
substr
(
$textColor
,
3
,
2
));
$B
=
hexdec
(
substr
(
$textColor
,
5
));
}
else
{
die
(
"
水印文字颜色格式不正确!
"
);
}
imagestring (
$ground_im
,
$textFont
,
$posX
,
$posY
,
$waterText
,
imagecolorallocate (
$ground_im
,
$R
,
$G
,
$B
));
}
//
生成水印后的图片
@
unlink
(
$groundImage
);
switch
(
$ground_info
[
2
])
//
取得背景图片的格式
{
case
1
:
imagegif (
$ground_im
,
$groundImage
);
break
;
case
2
:
imagejpeg (
$ground_im
,
$groundImage
);
break
;
case
3
:
imagepng (
$ground_im
,
$groundImage
);
break
;
default
:
die
(
$errorMsg
);
}
//
释放内存
if
(
isset
(
$water_info
))
unset
(
$water_info
);
if
(
isset
(
$water_im
)) imagedestroy (
$water_im
);
unset
(
$ground_info
);
imagedestroy (
$ground_im
);
}
imageWaterMark (
"
1.jpg
"
,
0
,
"
watermark.gif
"
,
"
http://www.qltv.com.cn
"
,
5
,
"
#FF0000
"
);
//
---------------------------------------------------------------------------------------
/*
if(isset( $_FILES ) && !empty( $_FILES [ 'userfile' ]) && $_FILES [ 'userfile' ][ 'size' ]> 0 )
{
$uploadfile = "./" . time (). "_" . $_FILES [ 'userfile' ][ 'name' ];
if ( copy ( $_FILES [ 'userfile' ][ 'tmp_name' ], $uploadfile ))
{
echo "OK<br>" ;
//文字水印
imageWaterMark ( $uploadfile , 0 , "" , "http://www.qltv.com.cn" , 5 , "#FF0000" );
//图片水印
//$waterImage="./Hanweb_shuiyin.gif";//水印图片路径
//imageWaterMark($uploadfile,0,$waterImage);
echo "<img src=\"" . $uploadfile . "\" border=\"0\">" ;
}
else
{
echo "Fail<br>" ;
}
}
*/
?>
<
form enctype
=
"
multipart/form-data
"
method
=
"
POST
"
>
文件
:
<
input name
=
"
userfile
"
type
=
"
file
"
>
<
input type
=
"
submit
"
value
=
"
上传
"
>
</
form
>
查看全文
相关阅读:
关于ueditor1.4.3版复制section标签丢失class和style样式问题
关于移动手机端富文本编辑器qeditor图片上传改造
移动web HTML5使用photoswipe模仿微信朋友圈图片放大浏览
PLSQL Developer如何设置自动打开上次编辑的文件
Linux目录结构
git与代码托管工具
mysql的索引
Gson学习记录
java线程池的初探
netty学习总结(一)
原文地址:https://www.cnblogs.com/studio313/p/1052431.html
最新文章
What is CRC and how does it works?
Iptables
HTTP性能测试
Ansible的安装
002. MySQL复制操作
Mysql源码安装
【GEO】【R语言】GEO探针转换为Gene name symbol
短篇文档兼职看过来 python 课后作业 assignment project
一些有用的工具合集
生物信息学的经验【转发】
热门文章
ChIP-seq基本流程及工具
ChIP-seq 核心分析 下游分析
SAMTOOLS使用 SAM BAM文件处理
生物信息学工具--bowtie&bowtie2
R语言 一套内容 从入门 到放弃
python 解方程
WPF学习笔记-自定义窗口
WPF学习笔记-使用自定义资源字典(style)文件
WPF学习笔记-TextBox光标位置如何放到最后?
WPF学习笔记-如何按ESC关闭窗口
Copyright © 2011-2022 走看看