小鎮樹妖--住在樹上的妖

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

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            10 Posts :: 50 Stories :: 7 Comments :: 0 Trackbacks

          如果對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="$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;
              }

              $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()或是原已經定好的圖像

          程序當中判斷水印類型:一是字符串,另是增加一個圖形對象在上面。

          主站蜘蛛池模板: 东乌珠穆沁旗| 张家口市| 固始县| 姜堰市| 怀安县| 冀州市| 昌都县| 定结县| 屏山县| 南城县| 山东省| 扎赉特旗| 通州区| 商丘市| 抚顺市| 县级市| 太湖县| 区。| 苏尼特左旗| 土默特右旗| 尼勒克县| 佳木斯市| 德阳市| 阳原县| 瑞金市| 施秉县| 互助| 奉节县| 会泽县| 三台县| 独山县| 龙州县| 始兴县| 祥云县| 江川县| 文成县| 木兰县| 木里| 自贡市| 营口市| 湟源县|