php网站水印功能代码,php图片水印功能代码(支持图片与文字)

news/2024/5/11 22:44:34/文章来源:https://blog.csdn.net/weixin_39997253/article/details/115162474

/*

* 功能: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(红色);

* http://bbs.it-home.org

* 注意: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,"./cour.ttf",$waterText);//取得使用 TrueType 字体的文本的范围

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

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

unset($temp);

$label = "文字区域";

}

if( ($ground_w{

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);

}

//------

if(isset($_FILES) && !empty($_FILES['userfile']) && $_FILES['userfile']['size']>0)

{

$uploadfile = "./".time()."_".$_FILES['userfile']['name'];

if (copy($_FILES['userfile']['tmp_name'], $uploadfile))

{

echo "OK

";

//文字水印

imageWaterMark($uploadfile,0,"","your water text",9,"#EBEBEB");

//图片水印

//$waterImage="./images/watermark.gif";//水印图片路径

//imageWaterMark($uploadfile,9,$waterImage);

echo "

%5C%22%22.%24uploadfile.%22%5C%22";

}

else

{

echo "Fail

";

}

}

?>

文件:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_753872.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux不规则窗口,实例21 不规则窗体 - PyQt4 精彩实例分析_Linux编程_Linux公社-Linux系统门户网站...

常见的窗体通常是各种方形的对话框,如前面实例中实现的所有对话框都是这样的。但有时也会需要用到非方形的窗体,如圆形,椭圆形甚至是不规则形状的对话框。本实例即实现了一个对PNG图形外沿为形状的不规则形状对话框,如下图所示。在…

域名实名认证多长时间_如何在阿里云申请域名丨建站系列

域名:由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网&…

网站统计中的数据收集原理及实现

http://blog.codinglabs.org/articles/how-web-analytics-data-collection-system-work.html 网站数据统计分析工具是网站站长和运营人员经常使用的一种工具,比较常用的有谷歌分析、百度统计和腾讯分析等等。所有这些统计分析工具的第一步都是网站访问数据的收集。目…

网站开发中经常用到的javaScript技术

1.1 屏蔽键盘所有键<script language"javascript"><!--function document.onkeydown(){ event.keyCode 0; event.returnvalue false;}--></script> 1.2 屏蔽鼠标右键 在body标签里加上οncοntextmenuself.event.returnvaluefalse 或者 <…

微软网站上已开始应用Silverlight技术

昨天我打开微软网站首页时&#xff0c;惊奇的发现&#xff0c;有动画效果的广告已经由Silverlight取代了原先的Flash来实现&#xff0c;因为被提示需要安装Sliverlight的运行时。 我想&#xff0c;随着Silverlight正式发布(1.0版本已经到RC了)&#xff0c;它的…

无法从该网站添加应用_Microsoft Edge Dev更新 可安装Chrome网上应用店里的主题

本周&#xff0c;谷歌向 Edge Dev 通道推送了 86.0.594.2 版本更新&#xff0c;添加了可从 Chrome 网上应用店获取主题的功能。此外 Edge Dev 迎来了可靠性修复和其它改进&#xff0c;并且为那些喜欢对浏览器进行各种调整的用户引入了一个新的标记(flags)。启用之后&#xff0c…

QQ分享网站显示自定义的缩略图标题和介绍

点我立即购买 <strong>效果图</strong> 在网页的head处添加 <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-wid…

Linux_13/ 虚拟网站主机功能,Vsftpd

虚拟网站主机Apache的虚拟主机功能是服务器基于用户请求的不同IP地址、主机域名或端口号&#xff0c;实现提供多个网站同时为外部提供访问服务的技术&#xff0c;如图10-12所示&#xff0c;用户请求的资源不同&#xff0c;最终获取到的网页内容也各不相同。 ------------------…

大型网站架构不得不考虑的10个问题

为什么80%的码农都做不了架构师&#xff1f;>>> 这里的大型网站架构只包括高互动性高交互性的数据型大型网站&#xff0c;基于大家众所周知的原因&#xff0c;我们就不谈新闻类和一些依靠HTML静态化就可以实现的架 构了&#xff0c;我们以高负载高数据交换高数据流动…

如何制作自己的网站

在当今的互联网时代&#xff0c;门户网站已经成为越来越多企业不可或缺的组成部分。企业如何自己制作网站&#xff1f;如果你们公司有懂网站建设这方面的人&#xff0c;可以让他给你们公司做个网站。一般做网站&#xff0c;域名空间买好了。下面就是网站程序的设计制作。如果要…

在线渐变配色网站分享

分享来源地址 纹理库.设计师的纹理宝库 webgradients渐变配色网站&#xff1a;https://webgradients.com Grabient在线渐变配色网站&#xff1a; https://www.grabient.com 下面这张图就是在线渐变配色的效果图 点击左下角「90度」图案&#xff0c;就可以操控渐变的角度哦&…

如何在Web网站实现搜索功能

以前曾在一些论坛上帖在搜索功能&#xff0c;不过还是有网友对Insus.NET说起不太会用。另外随着时间的推移&#xff0c;Insus.NET再把Search Utility再重构一下&#xff0c;希望用户能更方便容易应用。重构过的Utility&#xff0c;可以从下面这里下载&#xff1a;http://www.cn…

学历证书查询唯一网站

中国高等教育学生信息网&#xff1a;http://www.chsi.com.cn/ 转载于:https://www.cnblogs.com/scgw/archive/2008/01/04/1026082.html

尝鲜Jumony for MVC,体验插件化网站开发

Jumony for MVC是这一年来Jumony项目的重头戏&#xff0c;Jumony for MVC是Jumony技术与ASP.NET MVC的结合&#xff0c;尽管现在Jumony for MVC还未发布稳定版本&#xff0c;但确实是非常值得一试的一个视图引擎。希望这篇文章能给大家带来眼前一亮的感觉。 在“用网站&#xf…

实战:GOOGLE不收录网站的分析解决

2019独角兽企业重金招聘Python工程师标准>>> 经常看到这样的言论&#xff1a;为什么baidu不收录我的网站&#xff0c;怎么我的首页不被google收录。以前也没有在意过&#xff0c;因为自己也没有碰到过这样的现象。不过这次在弄一个新站(http://dasile.com)的时候&am…

推荐一个免费的程序猿学习网站(菜鸟教程)

https://www.runoob.com/ 菜鸟教程 送上一波福利 微信公众号开发、企业建站开发、小程序、vue、h5、css3、react等前端视频学习资料关注公众号【码兄】免费获取 在这里有在线编辑工具、有很多很多很多很多的语言、技术提供学习 前提是免费的免费的 欢迎加入技术分享学习公众…

web developer tips (36):使用IIS7.0 应用请求路由模块管理网站的beta版程序

原文地址&#xff1a;How to manage pilot or beta program for your site using Application Request Routing in IIS7.0 如果给你网站适合的用户设置目标和路由&#xff0c;用来使用试用/bate/新程序来查找用户资料&#xff0c;是不是件很酷的事&#xff1f;这对于管理曾经在…

推荐一个新的技术网站OutOfMemory.CN

2019独角兽企业重金招聘Python工程师标准>>> 朋友开发了一个技术网站&#xff0c;让我帮忙推荐给同样做技术的朋友们。 这个网站很有意思&#xff0c;他的域名是OutOfMemory.CN&#xff0c;似乎是和国外那个著名的stackoverflow学来的&#xff0c;都是异常。这个网站…

使用Web标准建站第9天:第一个CSS布局实例

接下来开始要真正设计布局了。和传统的方法一样&#xff0c;你首先要在脑海里有大致的轮廓构想&#xff0c;然后用photoshop把它画出来。你可能看到有关web标准的站点大都很朴素&#xff0c;因为web标准更关注结构和内容&#xff0c;实际上它与网页的美观没有根本冲突&#xff…

老弟,来了?VUE+Nuxt.js+Koa+Vuex入门教程(一)仿写一个cnode网站

if(有工作){if(工作地址 "深圳" || 工作地址 "广州" ){do(请联系作者&#xff0c;qq:1172081598)} }何为Nuxt.js Nuxt.js是一个vue的服务端渲染的框架&#xff0c;集成了express框架&#xff0c;sass/less框架等等,ui框架如Bootstrap&#xff0c;Vuet…