小鎮(zhèn)樹妖--住在樹上的妖

          To follow the path: look to the master, follow the master, walk with the master, see through the master, become the master.

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            10 Posts :: 50 Stories :: 7 Comments :: 0 Trackbacks

          如果對(duì)PHP的GD庫比較熟悉,看懂這篇文章一點(diǎn)都不難了!
          <?php
          /******************************************************************************

          參數(shù)說明:
          $max_file_size  : 上傳文件大小限制, 單位BYTE
          $destination_folder : 上傳文件路徑
          $watermark   : 是否附加水印(1為加水印,其他為不加水印);

          使用說明:
          1. 將PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;號(hào)去掉,因?yàn)槲覀円玫紾D庫;
          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="$waterimg="xplore.gif";    //水印圖片
          $imgpreview=1;      //是否生成預(yù)覽圖(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 "同名文件已經(jīng)存在了";
                  exit;
              }

              if(!move_uploaded_file ($filename, $destination))
              {
                  echo "移動(dòng)文件出錯(cuò)";
                  exit;
              }

              $pinfo=pathinfo($destination);
              $fname=$pinfo[basename];
              echo " <font color=red>已經(jīng)成功上傳</font><br>文件名:  <font color=blue>".$destination_folder.$fname."</font><br>";
              echo " 寬度:".$image_size[0];
              echo " 長(zhǎng)度:".$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>圖片預(yù)覽:<br>";
              echo "<img src=\"".$destination."\" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);
              echo " alt=\"圖片預(yù)覽:\r文件名:".$destination."\r上傳時(shí)間:\">";
              }
          }
          ?>
          </body>
          </html>

           

          最后我覺得有必要說一下給圖片加水印的原理:

          取得上傳的文件信息,建立一個(gè)真彩色圖象,分配顏色方案并且填充圖像。

          通過判斷文件類型建立圖形,然后把其復(fù)制到原建立的圖形上,填充并建立rectangle,以備寫入imagestring()或是原已經(jīng)定好的圖像

          程序當(dāng)中判斷水印類型:一是字符串,另是增加一個(gè)圖形對(duì)象在上面。

          主站蜘蛛池模板: 额敏县| 南丹县| 建水县| 门源| 龙门县| 海丰县| 九龙县| 孝义市| 阳泉市| 高雄市| 甘肃省| 勐海县| 京山县| 昌图县| 奎屯市| 南漳县| 桦川县| 甘孜县| 滕州市| 金昌市| 桓台县| 沙湾县| 清远市| 玉门市| 体育| 九江县| 潢川县| 南部县| 泾源县| 甘孜| 桐庐县| 黑河市| 松溪县| 伊春市| 西平县| 武陟县| 金坛市| 和龙市| 收藏| 延川县| 普安县|