亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php圖片上傳類,支持加水印,生成略縮圖

2024-09-04 11:44:10
字體:
來源:轉載
供稿:網友

分享一個網友寫的php圖片上傳類,支持加水印,生成略縮圖功能,里面是配置和可以獲取的一些信息,每一個配置信息都有默認值,如無特殊需要,可以不配置,PHP類代碼如下:

  1. <?php 
  2. /*---------------------------------------------------------------------------------- 
  3.  *  
  4.  *----------------------------------------------------------------------------------  
  5.  */ 
  6. class image_up{ 
  7.  //定義基本參數 
  8.  private $uptype=array('image/jpg','image/jpeg','image/png','image/pjpeg','image/gif','image/bmp','image/x-png');  //上傳文件類型 
  9.  private $max_file_size=102400;    //上傳大小限制(單位:KB) 
  10.  private $destination_folder="up/"//上傳文件路徑 
  11.  private $watermark=1;              //是否附加水印 
  12.  private $watertype=1;              //水印類型(1為文字,2為圖片) 
  13.  private $waterposition=1;          //水印位置(1為左下角,2為右下角,3為左上角,4為右上角,5為居中); 
  14.  private $waterstring=null;         //水印字符串 
  15.  private $waterimg=null;            //水印圖片 
  16.  private $imgpreview=1;             //是否生成預覽圖(1為生成,其他為不生成); 
  17.  private $imgpreviewsize=1;         //預覽圖比例,0為按固定寬和高顯示,其他為比例顯示 
  18.  private $imgwidth=200;             //預覽圖固定寬度 
  19.  private $imgheight=200;            //預覽圖固定高度 
  20.  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
  21.  private $imgthu=1;                     //是否生成且保存略縮圖,1為生成,0為不生成 
  22.  private $imgthu_folder=null;           //略縮圖保存路徑,默認與文件路徑一致 
  23.  private $imgthu_fixed=0;               //略縮圖是否使用固定寬高,1為使用,0為靈活變動 
  24.  private $imgthu_width=200;             //略縮圖寬度 
  25.  private $imgthu_height=200;            //略縮圖高度 
  26.   
  27.  private $imgthu_name=null;             //略縮圖名稱 
  28.  //****************************************************************************************************************** 
  29.  private $inputname="upfile";       //文件上傳框名稱 
  30.  //****************************************************************************************************************** 
  31.  private $img_preview_display;      //圖片預覽圖顯示 
  32.  //****************************************************************************************************************** 
  33.  //文件上傳相關信息,1為文件不存在,2為類型不符合,3為超出大小限制,4為上傳失敗,0為上傳成功 
  34.  private $file_up_info=null; 
  35.  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
  36.  //可在外部獲取上傳文件基本信息 
  37.  private $file_name;         //客服端文件的原名稱 
  38.  private $file_type;         //文件的MIME類型 
  39.  private $file_size;         //已上傳文件的大小,單位/字節 
  40.  private $file_tmp_name;     //儲存的臨時文件名 
  41.  private $file_error;        //該文件上傳相關錯誤代碼 
  42.  
  43.  private $img_size;          //取得圖片的長寬 
  44.  private $file_basename;     //獲取帶擴展名的全名 
  45.  private $file_extension;    //獲取文件擴展名 
  46.  private $filename;          //文件名(不帶擴展名) 
  47.  private $destination;       //問價路徑加名稱 
  48.  //****************************************************************************************************************** 
  49.  public function __set($propety_name,$value){ 
  50.   $this->$propety_name=$value
  51.  } 
  52.  public function __get($property_name){ 
  53.   if(isset($this->$property_name)) 
  54.   return($this->$property_name); 
  55.   else return(NULL); 
  56.  } 
  57.  //****************************************************************************************************************** 
  58.  //定義文件上傳功能 
  59.  public function up(){ 
  60.   //判斷文件是否存在 
  61.   if(!is_uploaded_file($_FILES[$this->inputname]["tmp_name"])){ 
  62.    $this->file_up_info=1; 
  63.    return
  64.   } 
  65.   //獲取并賦值相應基本參數 
  66.   $upfile=$_FILES[$this->inputname]; 
  67.   $this->file_name=$upfile["name"]; 
  68.   $this->file_type=$upfile["type"]; 
  69.   $this->file_size=$upfile["size"]; 
  70.   $this->file_tmp_name=$upfile["tmp_name"]; 
  71.   $this->file_error=$upfile["error"]; 
  72.   //檢查文件類型是否符合 
  73.   if(!in_array($this->file_type,$this->uptype)){ 
  74.    $this->file_up_info=2; 
  75.    return
  76.   } 
  77.   //檢查文件大小是否超出限制 
  78.   if($this->file_size>$this->max_file_size){ 
  79.    $this->file_up_info=3; 
  80.    return
  81.   } 
  82.   //判斷目錄是否存在 
  83.   if(!file_exists($this->destination_folder)) 
  84.   mkdir($this->destination_folder); 
  85.   //進一步取得圖片的信息并賦值 
  86.   $this->img_size=getimagesize($this->file_tmp_name); 
  87.   $pathinfo=pathinfo($this->file_name); 
  88.   $this->file_extension=$pathinfo["extension"];    //獲取文件擴展名 
  89.   $this->file_basename=$pathinfo["basename"];      //獲取帶擴展名的全名 
  90.   $this->filename=$pathinfo["filename"];           //文件名(不帶擴展名) 
  91.   $filename2=$pathinfo['filename']; 
  92.   $this->destination = $this->destination_folder.$this->filename.".".$this->file_extension; 
  93.   //判斷文件名是否存在,如果存在則重命名 
  94.   $n=1; 
  95.   while (file_exists($this->destination)){ 
  96.    while (file_exists($this->destination)){ 
  97.     $n++; 
  98.     $this->filename=$this->filename."(".$n.")"
  99.     $this->destination = $this->destination_folder.$this->filename.".".$this->file_extension; 
  100.    } 
  101.    $this->filename=$filename2."(".$n.")"
  102.    $this->destination = $this->destination_folder.$this->filename.".".$this->file_extension; 
  103.   } 
  104.   //移動上傳的文件 
  105.   if(move_uploaded_file($this->file_tmp_name,$this->destination)) 
  106.   $this->file_up_info=0; 
  107.   else $this->file_up_info=4; 
  108.     
  109.   //添加水印 
  110.   if($this->watermark==1){ 
  111.    $this->imgthu(); 
  112.   } 
  113.   //生成略縮圖 
  114.   if($this->imgthu==1){ 
  115.    $this->add_watermark(); 
  116.   } 
  117.   //生成預覽圖 
  118.   if($this->imgpreviewsize == 0){ 
  119.    if($this->img_size["0"]<$this->imgwidth) $this->imgwidth=$this->img_size["0"]; 
  120.    if($this->img_size["1"]<$this->imgheight) $this->imgheight=$this->img_size["1"]; 
  121.   }else
  122.    $this->imgwidth=$this->img_size["0"]*$this->imgpreviewsize; 
  123.    $this->imgheight=$this->img_size["1"]*$this->imgpreviewsize; 
  124.   } 
  125.   $this->img_preview_display="<img src='$this->destination' width='$this->imgwidth' height='$this->imgheight' 
  126.                                     alt='圖片預覽:r文件名'$this->file_tmp_name />"; 
  127.  } 
  128. //==================================================================================================================== 
  129. //====================================================================================================================  
  130.  //生成略縮圖功能 
  131.  function imgthu(){ 
  132.   if($this->imgthu_folder==null) 
  133.     $this->imgthu_folder=$this->destination_folder; 
  134.    
  135.   //$this->imgthu_name=$this->filename."_t.".$this->file_extension; 
  136.   $imgthu_name_b=$this->filename."_t"
  137.   $imgthu_name_b2=$this->filename."_t"
  138.   $destination_b=$this->imgthu_folder.$imgthu_name_b.".".$this->file_extension; 
  139.      //判斷文件名是否存在,如果存在則重命名 
  140.   $n=1; 
  141.   while (file_exists($destination_b)){ 
  142.    while (file_exists($destination_b)){ 
  143.     $n++; 
  144.     $imgthu_name_b=$imgthu_name_b."(".$n.")"
  145.     $destination_b = $this->imgthu_folder.$imgthu_name_b.".".$this->file_extension; 
  146.    } 
  147.    $imgthu_name_b=$imgthu_name_b2."(".$n.")"
  148.    $destination_b = $this->imgthu_folder.$imgthu_name_b.".".$this->file_extension; 
  149.   } 
  150.    
  151.    
  152.   $imginfo=getimagesize($this->destination); 
  153.   switch($imginfo[2]) 
  154.   { 
  155.    case 1: 
  156.     $in=@imagecreatefromgif($this->destination); 
  157.     break
  158.    case 2: 
  159.     $in=@imagecreatefromjpeg($this->destination); 
  160.     break
  161.    case 3: 
  162.     $in=@imagecreatefrompng($this->destination); 
  163.     break
  164.    case 6: 
  165.     $in =@imagecreatefrombmp($this->destination); 
  166.     break
  167.    default
  168.     break
  169.   } 
  170.   //計算略縮圖長寬 
  171.   if($this->imgthu_fixed==0){ 
  172.    if($this->imgthu_height>($imginfo[1]/$imginfo[0])*$this->imgthu_width) 
  173.     $this->imgthu_width = ($imginfo[0]/$imginfo[1])*$this->imgthu_height; 
  174.    else 
  175.     $this->imgthu_height=($imginfo[1]/$imginfo[0])*$this->imgthu_width; 
  176.   } 
  177.   $new = imageCreateTrueColor($this->imgthu_width,$this->imgthu_height); 
  178.   ImageCopyResized($new,$in,0,0,0,0,$this->imgthu_width,$this->imgthu_height,$imginfo[0],$imginfo[1]); 
  179.   switch ($imginfo[2]) 
  180.   { 
  181.    case 1: 
  182.     imagejpeg($new,$destination_b); 
  183.     break
  184.    case 2: 
  185.     imagejpeg($new,$destination_b); 
  186.     break
  187.    case 3: 
  188.     imagepng($new,$destination_b); 
  189.     break
  190.    case 6: 
  191.     imagewbmp($new,$destination_b); 
  192.     break
  193.   } 
  194.  } 
  195. //==================================================================================================================== 
  196. //====================================================================================================================  
  197.  //添加水印功能 
  198.  function add_watermark(){ 
  199.   //1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order), 
  200.   //8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM。 
  201.   $imginfo=getimagesize($this->destination); 
  202.   $im=imagecreatetruecolor($this->img_size[0],$this->img_size[1]);       //創建真彩色 
  203.   $white=imagecolorallocate($im,255,255,255);                            //設置顏色 
  204.   $black=imagecolorallocate($im,0,0,0); 
  205.   $red=imagecolorallocate($im,255,0,0); 
  206.   //在 image 圖像的坐標 x,y(圖像左上角為 0, 0)處用 color 顏色執行區域填充(即與 x, y 點顏色相同且相鄰的點都會被填充)。 
  207.   imagefill($im,0,0,$white); 
  208.  
  209.   switch($imginfo[2]) 
  210.   { 
  211.    case 1: 
  212.     $simage =imagecreatefromgif($this->destination);      // 創建一個新的形象,從文件或 URL 
  213.     break
  214.    case 2: 
  215.     $simage =imagecreatefromjpeg($this->destination); 
  216.     break
  217.    case 3: 
  218.     $simage =imagecreatefrompng($this->destination); 
  219.     break
  220.    case 6: 
  221.     $simage =imagecreatefromwbmp($this->destination); 
  222.     break
  223.    default
  224.     echo ("不支持的文件類型"); 
  225.     break
  226.   } 
  227.   if(!emptyempty($simage)) 
  228.   { 
  229.    //位置設置 
  230.    if($this->watertype==1){ 
  231.     $str_len=strlen($this->waterstring); 
  232.        $str_width=$str_len*10; 
  233.        $str_height=20; 
  234.    }elseif($this->watertype==1 && file_exists($this->waterimg)){ 
  235.     $iinfo=getimagesize($this->waterimg); 
  236.     $str_width = $iinfo[0]; 
  237.     $str_height = $iinfo[1]; 
  238.    } 
  239.     
  240.    switch ($this->waterposition){ 
  241.     case 1: 
  242.      $p_x=5; 
  243.      $p_y=$this->img_size[1]-$str_height
  244.      break
  245.     case 2: 
  246.      $p_x=$this->img_size[0]-$str_width
  247.      $p_y=$this->img_size[1]-$str_height
  248.      break
  249.     case 3: 
  250.      $p_x=5; 
  251.      $p_y=0; 
  252.      break
  253.     case 4: 
  254.      $p_x=$this->img_size[0]-$str_width
  255.      $p_y=5; 
  256.      break
  257.     case 5: 
  258.      $p_x=($this->img_size[0]-$str_width)/2; 
  259.      $p_y=($this->img_size[1]-$str_height)/2; 
  260.      break
  261.    } 
  262.    imagecopy($im,$simage,0,0,0,0,$this->img_size[0],$this->img_size[1]);   //拷貝圖像的一部分 
  263.    //imagefilledrectangle($im,1,$this->img_size[1]-15,130,$this->img_size[1],$white);  //將圖片的封閉長方形區域著色 
  264.  
  265.    switch($this->watertype) 
  266.    { 
  267.     case 1:   //加水印字符串 
  268.      imagestring($im,10,$p_x,$p_y,$this->waterstring,$red); 
  269.      break
  270.     case 2:   //加水印圖片 
  271.      $simage1 =imagecreatefromgif($this->waterimg); 
  272.      imagecopy($im,$simage1,0,0,0,0,85,15); 
  273.      imagedestroy($simage1); 
  274.      break
  275.    } 
  276.  
  277.    switch ($imginfo[2]) 
  278.    { 
  279.     case 1: 
  280.      //imagegif($nimage, $destination); 
  281.      imagejpeg($im$this->destination); 
  282.      break
  283.     case 2: 
  284.      imagejpeg($im$this->destination); 
  285.      break
  286.     case 3: 
  287.      imagepng($im$this->destination); 
  288.      break;//開源代碼Vevb.com 
  289.     case 6: 
  290.      imagewbmp($im$this->destination); 
  291.      break
  292.    } 
  293.    //覆蓋原上傳文件 
  294.    imagedestroy($im); 
  295.    imagedestroy($simage); 
  296.   } 
  297.  } 
  298. ?> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品一区二区女厕厕| 久久色在线播放| 57pao成人国产永久免费| 尤物yw午夜国产精品视频明星| 九九精品在线观看| 亚洲色图日韩av| 日韩美女在线观看| 日韩在线观看电影| 国产精品免费在线免费| 成人黄色大片在线免费观看| 亚洲精品视频在线播放| 成人两性免费视频| 亚洲男人天堂网| 国产精品久久久999| 亚洲国产小视频在线观看| 456国产精品| 国产精品成人va在线观看| 国产成人极品视频| 国产91免费看片| 亚洲老头老太hd| 欧美午夜片欧美片在线观看| 国产女精品视频网站免费| 国产精品欧美在线| 国产丝袜一区二区三区| 国产成人亚洲综合91精品| 色婷婷综合久久久久中文字幕1| 色偷偷av亚洲男人的天堂| 国产精品永久免费观看| 日本午夜在线亚洲.国产| 欧美老女人性生活| 久久综合久久美利坚合众国| 日韩福利在线播放| 欧美日韩国产一区中文午夜| 亚洲人成在线免费观看| 成人午夜一级二级三级| 麻豆精品精华液| 亚洲美女免费精品视频在线观看| 精品欧美激情精品一区| 欧美性xxxxxxx| 国产精品99久久久久久白浆小说| 久久综合久中文字幕青草| 亚洲成人xxx| 亚洲黄页视频免费观看| 欧美高清videos高潮hd| 欧美亚洲激情在线| 亚洲国产精品99| 日韩中文字幕在线播放| 尤物精品国产第一福利三区| 日韩欧美一区二区三区久久| 欧美性猛交xxxx乱大交| 亚洲少妇中文在线| 国产精品日日摸夜夜添夜夜av| 亚洲无亚洲人成网站77777| 91精品国产91久久久久久最新| 国产欧美精品一区二区三区介绍| 欧美成人精品一区二区| 亚洲三级黄色在线观看| 亚洲人午夜精品免费| 不卡av电影在线观看| 91色p视频在线| 美女av一区二区三区| 国产欧美久久一区二区| 91高清免费在线观看| 另类专区欧美制服同性| 日韩免费观看高清| 国内成人精品一区| 97视频在线免费观看| 精品久久香蕉国产线看观看gif| 伊人伊成久久人综合网站| 色多多国产成人永久免费网站| 亚洲加勒比久久88色综合| 欧美国产日产韩国视频| 欧美精品久久久久久久久| 亚洲精品有码在线| 欧美巨猛xxxx猛交黑人97人| 91精品国产自产91精品| 欧美成人合集magnet| 国产成人综合久久| 色婷婷成人综合| 欧美性猛交xxxx黑人猛交| 国产97在线|日韩| 久久久精品视频成人| 在线激情影院一区| 亚洲国产精品系列| 91高潮在线观看| 九九九热精品免费视频观看网站| 亚洲美女性生活视频| 国产欧美精品一区二区三区介绍| 亚洲精品资源美女情侣酒店| 色噜噜狠狠色综合网图区| 日韩av在线网址| 成人免费视频97| 日韩成人在线免费观看| 国产在线观看91精品一区| 日韩小视频在线观看| 国产97在线|亚洲| 狠狠久久五月精品中文字幕| 久久精品国产综合| 久久亚洲综合国产精品99麻豆精品福利| 欧美日韩一区二区三区| 国产精品高潮呻吟久久av野狼| 成人美女免费网站视频| 日韩在线观看成人| 992tv成人免费视频| 国产成人精品免高潮费视频| 中国china体内裑精亚洲片| 91高清视频在线免费观看| 精品无码久久久久久国产| 日韩欧美成人区| 国内精品久久久久伊人av| 欧美日韩国产二区| 色综合老司机第九色激情| 亚洲精品成人网| 久久中文久久字幕| 亚洲精选一区二区| 成人精品久久一区二区三区| 久久久视频免费观看| 欧美激情欧美狂野欧美精品| 中文字幕在线日韩| 国产精品第2页| 国产成人精品久久二区二区91| 欧美大学生性色视频| 亚洲成人免费在线视频| 欧美俄罗斯性视频| 尤物九九久久国产精品的分类| 日韩欧美视频一区二区三区| 久久国内精品一国内精品| 亚洲桃花岛网站| 国产精品网站大全| 色偷偷综合社区| 久久久久久中文字幕| 色综合导航网站| 91成人在线观看国产| 成人网在线观看| 亚洲欧洲在线免费| 国产精品中文字幕在线| 亚洲欧美综合图区| 97色在线播放视频| 国产mv久久久| 欧美寡妇偷汉性猛交| 91精品国产综合久久香蕉922| 日本不卡视频在线播放| 欧美日韩999| 日韩美女视频中文字幕| 国产精品夜色7777狼人| 91热福利电影| 日韩欧美国产中文字幕| 欧美乱大交xxxxx| 欧美激情网友自拍| 久久久久久久久久久久久久久久久久av| 亚洲国产精品va在线观看黑人| 欧美性猛交xxxx偷拍洗澡| 久久精品最新地址| 韩曰欧美视频免费观看| 国产成人久久久| 国产99在线|中文| 亚洲视频999| 欧美成人激情视频免费观看| 国产午夜精品全部视频在线播放| 欧美激情小视频| 亚洲黄色免费三级| 欧美与欧洲交xxxx免费观看| 久久亚洲精品国产亚洲老地址| 欧美激情在线一区|