日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php加水印功能,PHP图片加水印功能

發布時間:2024/1/23 php 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php加水印功能,PHP图片加水印功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本篇文章主要介紹PHP圖片加水印功能,感興趣的朋友參考下,希望對大家有所幫助。

實例代碼如下:<?php

/**

* 功能:給一張圖片加上水印效果

* $i 要加水印效果的圖片

* $t 水印文字

* $size 文字大小

* $pos 水印的位置

* $color 文字的顏色

* $flag 是布爾值,主要用來區分是不是原圖上加水印

* $type 如果$flag等于false 則新圖上加上水印 新文件名為 原名_txt.jpg

*/

function txt($i,$t='版權所有',$size=25,$pos=5,$color='rand',$flag=true,$type='_txt'){

$img = imagecreatefromjpeg($i);

$w = imagesx($img);

$h = imagesy($img);

$font = dirname(__FILE__).'/font/ls.ttf';

$ps = imagettfbbox($size,0,$font,$t);

$tw = $ps[4];

$th = abs($ps[5]);

switch($pos){

case 1:break;

case 2:break;

case 3:break;

case 4:break;

case 5:$x=($w-$tw)/2;$y=($h-$th)/2+$th;break;

case 6:break;

case 7:break;

case 8:break;

case 9:break;

default:break;

}

$c = getcolor($img,$color);

imagettftext($img,$size,0,$x,$y,$c,$font,$t);

if($flag){

imagejpeg($img,$i);

}else{

$ext = ext($i);

$ppp = rtrim($i,'.'.$ext);

$ppp = $ppp.$type.'.'.$ext;

imagejpeg($img,$ppp);

}

}

function getcolor($i,$c='rand',$a=50){

$cc = '';

switch($c){

case 'white':$cc=imagecolorallocatealpha($i,255,255,255,$a);break;

case 'black':$cc=imagecolorallocatealpha($i,0,0,0,$a);break;

case 'red':$cc=imagecolorallocatealpha($i,255,0,0,$a);break;

case 'green':$cc=imagecolorallocatealpha($i,0,255,0,$a);break;

case 'blue':$cc=imagecolorallocatealpha($i,0,0,255,$a);break;

case 'orange':$cc=imagecolorallocatealpha($i,0xff,0x66,0x33,$a);break;

case 'yellow':$cc=imagecolorallocatealpha($i,255,255,0,$a);break;

case 'rand':$cc=imagecolorallocatealpha($i,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255),$a);break;

default:

$cs = substr($c,1);

$ok = str_split($cs,2);

$cc = imagecolorallocatealpha($i,hexdec($ok[0]),hexdec($ok[1]),hexdec($ok[2]),$a);

break;

}

return $cc;

}

/**

* 功能是:返回擴展名

*/

function ext($f){

$exts = explode('.',$f);

return end($exts);

}

/**

* 功能是:返回文件名,不含擴展名

*/

function name($f){

$s = explode('/',$f);

$fn = end($s);

return rtrim($fn,'.'.ext($f));

}

我們再來看一個支持以圖片和文字兩種方式給圖片添加水印。圖片支持GIF,PNG,JPG三種格式,水印圖片支持PNG和GIFfunction setWater($imgSrc,$markImg,$markText,$TextColor,$markPos,$fontType,$markType)

{

$srcInfo = @getimagesize($imgSrc);

$srcImg_w = $srcInfo[0];

$srcImg_h = $srcInfo[1];

switch ($srcInfo[2])

{

case 1:

$srcim =imagecreatefromgif($imgSrc);

break;

case 2:

$srcim =imagecreatefromjpeg($imgSrc);

break;

case 3:

$srcim =imagecreatefrompng($imgSrc);

break;

default:

die("不支持的圖片文件類型");

exit;

}

if(!strcmp($markType,"img"))

{

if(!file_exists($markImg) || empty($markImg))

{

return;

}

$markImgInfo = @getimagesize($markImg);

$markImg_w = $markImgInfo[0];

$markImg_h = $markImgInfo[1];

if($srcImg_w < $markImg_w || $srcImg_h < $markImg_h)

{

return;

}

switch ($markImgInfo[2])

{

case 1:

$markim =imagecreatefromgif($markImg);

break;

case 2:

$markim =imagecreatefromjpeg($markImg);

break;

case 3:

$markim =imagecreatefrompng($markImg);

break;

default:

die("不支持的水印圖片文件類型");

exit;

}

$logow = $markImg_w;

$logoh = $markImg_h;

}

if(!strcmp($markType,"text"))

{

$fontSize = 16;

if(!empty($markText))

{

if(!file_exists($fontType))

{

return;

}

}

else {

return;

}

$box = @imagettfbbox($fontSize, 0, $fontType,$markText);

$logow = max($box[2], $box[4]) - min($box[0], $box[6]);

$logoh = max($box[1], $box[3]) - min($box[5], $box[7]);

}

if($markPos == 0)

{

$markPos = rand(1, 9);

}

switch($markPos)

{

case 1:

$x = +5;

$y = +5;

break;

case 2:

$x = ($srcImg_w - $logow) / 2;

$y = +5;

break;

case 3:

$x = $srcImg_w - $logow - 5;

$y = +15;

break;

case 4:

$x = +5;

$y = ($srcImg_h - $logoh) / 2;

break;

case 5:

$x = ($srcImg_w - $logow) / 2;

$y = ($srcImg_h - $logoh) / 2;

break;

case 6:

$x = $srcImg_w - $logow - 5;

$y = ($srcImg_h - $logoh) / 2;

break;

case 7:

$x = +5;

$y = $srcImg_h - $logoh - 5;

break;

case 8:

$x = ($srcImg_w - $logow) / 2;

$y = $srcImg_h - $logoh - 5;

break;

case 9:

$x = $srcImg_w - $logow - 5;

$y = $srcImg_h - $logoh -5;

break;

default:

die("此位置不支持");

exit;

}

$dst_img = @imagecreatetruecolor($srcImg_w, $srcImg_h);

imagecopy ( $dst_img, $srcim, 0, 0, 0, 0, $srcImg_w, $srcImg_h);

if(!strcmp($markType,"img"))

{

imagecopy($dst_img, $markim, $x, $y, 0, 0, $logow, $logoh);

imagedestroy($markim);

}

if(!strcmp($markType,"text"))

{

$rgb = explode(',', $TextColor);

$color = imagecolorallocate($dst_img, $rgb[0], $rgb[1], $rgb[2]);

imagettftext($dst_img, $fontSize, 0, $x, $y, $color, $fontType,$markText);

}

switch ($srcInfo[2])

{

case 1:

imagegif($dst_img, $imgSrc);

break;

case 2:

imagejpeg($dst_img, $imgSrc);

break;

case 3:

imagepng($dst_img, $imgSrc);

break;

default:

die("不支持的水印圖片文件類型");

exit;

}

imagedestroy($dst_img);

imagedestroy($srcim);

}

總結:以上就是本篇文的全部內容,希望能對大家的學習有所幫助。

相關推薦:

PHP正則中的捕獲組與非捕獲組實例分析

PHP怎樣生成圖像驗證碼的方法

關于PHP中spl_autoload_register()函數用法詳解

總結

以上是生活随笔為你收集整理的php加水印功能,PHP图片加水印功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。