- 以前在网站介绍过
ecshop
更换编辑成kindeditor
的方法,但是上传的图片不能自动增加水印,今天把相应方法告诉大家: - 在
kindeditor
/php
/upload_json
.php
中,有两处需要修改的地方。 - 第一步,在文件末尾添加一个方法
function
imageWaterMark
($groundImage
, $waterPos
=0, $waterImage
=”, $alpha
=80, $waterText
=”, $textFont
=9, $textColor
=’#FF0000
′){- $
isWaterImage
=FALSE
; - $
formatMsg
= ‘不支持该图片格式!请使用GIF
、JPG
、PNG
格式的图片。’; - //读取水印文件
- $
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
); - }
- }
- //读取背景图片
- $
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
{ -
alert
(“水印图片不存在!”); - }
- //水印位置
-
if
($isWaterImage
){//图片水印 - $
w
= $water_w
; - $
h
= $water_h
; - $
label
= “图片的”; - }
-
echo
“需要加水印的图片的长度或宽度比水印”.$label
.”还小,无法生成水印!”; -
return
; //www
.zuimoban
.com
- }
-
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
; -
if
(!$isWaterImage
){ - $
posY
= $ground_h
– $h
-20; - }
-
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
);//拷贝水印到目标文件 - //生成混合图像
-
imagecopymerge
($ground_im
, $water_im
, $posX
, $posY
, 0, 0, $water_w
, $water_h
, $alpha
); - }
else
{//文字水印 - $
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
,100);break
;//注意这里的 100,经测试,100 是图片质量/ 的,但文件大小会增加很多,95 的时候质量还不错,大小和原来的差不多。作者采用 95 的值。 -
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
); - }
- 第二步,找到$
json
=new
Services_JSON
();(这个文件中有两处,alert
($msg
)方法里的不用操作),在后面添加如下一段代码 - $
water_mark
= 1;//1 为加水印, 其它为不加 - $
water_pos
= 9;//水印位置,10 种状态【0 为随机,1 为顶端居左,2 为顶端居中,3 为顶端居右;4 为中部居左,5 为中部居中,6 为中部居右;7 为底端居左,8 为底端居中,9 为底端居】 - $
water_img
= $_SERVER
[‘DOCUMENT_ROOT
’].’/images
/water
.gif
’;//水印图片,默认填写空,请将图片上传至网站根目录的images
下,例:water
.gif
- $
water_alpha
= 50;//水印透明度 - $
water_text
= ”;//水印字符串,默认填写空; - //$
water_fontfile
= $_SERVER
[‘DOCUMENT_ROOT
’] .’/upfiles
/fonts
/arial
.ttf
’;//文字水印使用的字体; -
if
($water_mark
== 1){ -
imageWaterMark
($file_path
, $water_pos
, $water_img
, $water_alpha
, $water_text
); - }
- 这里只需要上传一张水印图片即可。
- 完成上述操作后,在用编辑器上传图片就可以实现上图的效果了。
转载请注明:汇站网 » ecshop
教程:编辑器 kindeditor
图片上传添加水印功能