仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1438|回复: 20
打印 上一主题 下一主题

[学习教程] PHP编程:PHP经典的给图片加水印法式

[复制链接]
若天明 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:11:06 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
最近陆续的有人问我学习php的心得,现在整理为下面,希望可以对大家有些帮助。法式     假如对PHP的GD库对照熟习,看懂这篇文章一点都不难了!
  <?php
  /******************************************************************************
   
  参数申明:
  $max_file_size : 上传文件巨细限制, 单元BYTE
  $destination_folder : 上传文件途径
  $watermark : 是不是附加水印(1为加水印,其他为不加水印);
   
  利用申明:
  1. 将PHP.INI文件外面的"extension=php_gd2.dll"一行后面的;号去失落,由于咱们要用到GD库;
  2. 将extension_dir =改成你的php_gd2.dll地点目次;
  ******************************************************************************/
   
  //上传文件类型列表
  $uptypes=array(
   'image/jpg',
   'image/jpeg',
   'image/png',
   'image/pjpeg',
   'image/gif',
   'image/bmp',
   'image/x-png'
  );
   
  $max_file_size=2000000; //上传文件巨细限制, 单元BYTE
  $destination_folder="uploadimg/"; //上传文件途径
  $watermark=1; //是不是附加水印(1为加水印,其他为不加水印);
  $watertype=1; //水印类型(1为文字,2为图片)
  $waterposition=1; //水印地位(1为左下角,2为右下角,3为左上角,4为右上角,5为居中);
  $waterstring="http://www.xplore.cn/"; //水印字符串
  $waterimg="xplore.gif"; //水印图片
  $imgpreview=1; //是不是生成预览图(1为生成,其他为不生成);
  $imgpreviewsize=1/2; //缩略图比例
  ?>
  <html>
  <head>
  <title>ZwelL图片上传法式</title>
  <style type="text/CSS">
  <!--
  body
  {
   font-size: 9pt;
  }
  input
  {
   background-color: #66CCFF;
   border: 1px inset #CCCCCC;
  }
  -->
  </style>
  </head>
   
  <body>
  <form enctype="multipart/form-data" method="post" name="upform">
   上传文件:
   <input name="upfile" type="file">
   <input type="submit" value="上传"><br>
   答应上传的文件类型为:<?=implode(', ',$uptypes)?>
  </form>
   
  <?php
  if ($_SERVER['REQUEST_METHOD'] == 'POST')
  {
   if (!is_uploaded_file($_FILES["upfile"][tmp_name]))
   //是不是存在文件
   {
   echo "图片不存在!";
   exit;
   }
   
   $file = $_FILES["upfile"];
   if($max_file_size < $file["size"])
   //反省文件巨细
   {
   echo "文件太大!";
   exit;
   }
   
   if(!in_array($file["type"], $uptypes))
   //反省文件类型
   {
   echo "文件类型不符!".$file["type"];
   exit;
   }
   
   if(!file_exists($destination_folder))
   {
   mkdir($destination_folder);
   }
   
   $filename=$file["tmp_name"];
   $image_size = getimagesize($filename);
   $pinfo=pathinfo($file["name"]);
   $ftype=$pinfo['extension'];
   $destination = $destination_folder.time().".".$ftype;
   if (file_exists($destination) && $overwrite != true)
   {
   echo "同名文件已存在了";
   exit;
   }
   
   if(!move_uploaded_file ($filename, $destination))
   {
   echo "挪动文件失足";
   exit;
   }
旅客,您好!转网通站 | 转电信站 积木首页 | 500多种网页殊效收拾整顿 | 适用查询函数手册 | 积木网BT下载同盟 | 经典笑话 | 播送电台 | 高明晰经典图片素材   
法式开辟  网页设计  搜刮引擎  殊效代码  操作体系  提防病毒  黑客手艺  图形图像  电脑硬件  收集手艺  服 务 器  数 据 库  网文精炼
     
您的地位:积木首页 >> 法式开辟频道 >> PHP >> 注释:  题目:PHP经典的给图片加水印法式(2)工夫:2006-8-7   来历:酷网动力  阅读数:7次     $pinfo=pathinfo($destination);
   $fname=$pinfo[basename];
   echo " <font color=red>已胜利上传</font><br>文件名: <font color=blue>".$destination_folder.$fname."</font><br>";
   echo " 宽度:".$image_size[0];
   echo " 长度:".$image_size[1];
   echo "<br> 巨细:".$file["size"]." bytes";
   
   if($watermark==1)
   {
   $iinfo=getimagesize($destination,$iinfo);
   $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);
   $white=imagecolorallocate($nimage,255,255,255);
   $black=imagecolorallocate($nimage,0,0,0);
   $red=imagecolorallocate($nimage,255,0,0);
   imagefill($nimage,0,0,$white);
   switch ($iinfo[2])
   {
   case 1:
   $simage =imagecreatefromgif($destination);
   break;
   case 2:
   $simage =imagecreatefromjpeg($destination);
   break;
   case 3:
   $simage =imagecreatefrompng($destination);
   break;
   case 6:
   $simage =imagecreatefromwbmp($destination);
   break;
   default:
   die("不撑持的文件类型";
   exit;
   }
   
   imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);
   imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);
   
   switch($watertype)
   {
   case 1: //加水印字符串
   imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);
   break;
   case 2: //加水印图片
   $simage1 =imagecreatefromgif("xplore.gif";
   imagecopy($nimage,$simage1,0,0,0,0,85,15);
   imagedestroy($simage1);
   break;
   }
   
   switch ($iinfo[2])
   {
   case 1:
   //imagegif($nimage, $destination);
   imagejpeg($nimage, $destination);
   break;
   case 2:
   imagejpeg($nimage, $destination);
   break;
   case 3:
   imagepng($nimage, $destination);
   break;
   case 6:
   imagewbmp($nimage, $destination);
   //imagejpeg($nimage, $destination);
   break;
   }
   
   //掩盖原上传文件
   imagedestroy($nimage);
   imagedestroy($simage);
   }
   
   if($imgpreview==1)
   {
   echo "<br>图片预览:<br>";
   echo "<img src=\"".$destination."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
   echo " alt=\"图片预览:\r文件名:".$destination."\r上传工夫:\">";
   }
  }
  ?>
  </body>
  </html>
   
   
   
  最初我感觉有需要说一下给图片加水印的道理:
   
  获得上传的文件信息,创立一个真黑色图像,分派色彩计划而且填充图象。
   
  经由过程判别文件类型创立图形,然后把其复制到原创立的图形上,填充并创立rectangle,以备写入imagestring()或是原已定好的图象
   
  法式傍边判别水印类型:一是字符串,另是增添一个图形对象在下面。
PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。
若天明 该用户已被删除
沙发
 楼主| 发表于 2015-3-14 17:46:48 | 显示全部楼层
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-25 07:52

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表