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

首頁 > 語言 > PHP > 正文

php給圖片加水印與上傳圖片加水印php類

2024-09-04 11:44:11
字體:
來源:轉載
供稿:網友
  1. /*  
  2. * 功能:PHP圖片水印 (水印支持圖片或文字)  
  3. * 參數:  
  4. * $groundImage 背景圖片,即需要加水印的圖片,暫只支持GIF,JPG,PNG格式;  
  5. * $waterPos 水印位置,有10種狀態,0為隨機位置;  
  6. * 1為頂端居左,2為頂端居中,3為頂端居右;  
  7. * 4為中部居左,5為中部居中,6為中部居右;  
  8. * 7為底端居左,8為底端居中,9為底端居右;  
  9. * $waterImage 圖片水印,即作為水印的圖片,暫只支持GIF,JPG,PNG格式;  
  10. * $waterText 文字水印,即把文字作為為水印,支持ASCII碼,不支持中文;  
  11. * $textFont 文字大小,值為1、2、3、4或5,默認為5;  
  12. * $textColor 文字顏色,值為十六進制顏色值,默認為#FF0000(紅色);  
  13.  
  14. * 注意:Support GD 2.0,Support FreeType、GIF Read、GIF Create、JPG 、PNG  
  15. * $waterImage 和 $waterText 最好不要同時使用,選其中之一即可,優先使用 $waterImage。  
  16. * 當$waterImage有效時,參數$waterString、$stringFont、$stringColor均不生效。  
  17. * 加水印后的圖片的文件名和 $groundImage 一樣。  
  18. * 作者:longware @ 2004-11-3 14:15:13  
  19. */  
  20. function imageWaterMark($groundImage,$waterPos=0,$waterImage=”",$waterText=”",$textFont=5,$textColor=”#FF0000″)  
  21. {  
  22. $isWaterImage = FALSE;  
  23. $formatMsg = “暫不支持該文件格式,請用圖片處理軟件將圖片轉換為GIF、JPG、PNG格式。”; 
  24.  
  25. //讀取水印文件  
  26. if(!emptyempty($waterImage) && file_exists($waterImage))  
  27. {  
  28. $isWaterImage = TRUE;  
  29. $water_info = getimagesize($waterImage);  
  30. $water_w = $water_info[0];//取得水印圖片的寬  
  31. $water_h = $water_info[1];//取得水印圖片的高 
  32.  
  33. switch($water_info[2])//取得水印圖片的格式  
  34. {  
  35. case 1:$water_im = imagecreatefromgif($waterImage);break;  
  36. case 2:$water_im = imagecreatefromjpeg($waterImage);break;  
  37. case 3:$water_im = imagecreatefrompng($waterImage);break;  
  38. default:die($formatMsg);  
  39. }  
  40.  
  41. //讀取背景圖片  
  42. if(!emptyempty($groundImage) && file_exists($groundImage))  
  43. {  
  44. $ground_info = getimagesize($groundImage);  
  45. $ground_w = $ground_info[0];//取得背景圖片的寬  
  46. $ground_h = $ground_info[1];//取得背景圖片的高 
  47.  
  48. switch($ground_info[2])//取得背景圖片的格式  
  49. {  
  50. case 1:$ground_im = imagecreatefromgif($groundImage);break;  
  51. case 2:$ground_im = imagecreatefromjpeg($groundImage);break;  
  52. case 3:$ground_im = imagecreatefrompng($groundImage);break;  
  53. default:die($formatMsg);  
  54. }  
  55. }  
  56. else  
  57. {  
  58. die(”需要加水印的圖片不存在!”);  
  59.  
  60. //水印位置  
  61. if($isWaterImage)//圖片水印  
  62. {  
  63. $w = $water_w;  
  64. $h = $water_h;  
  65. $label = “圖片的”;  
  66. }  
  67. else//文字水印  
  68. {  
  69. $temp = imagettfbbox(ceil($textFont*5),0,”./cour.ttf”,$waterText);//取得使用 TrueType 字體的文本的范圍  
  70. $w = $temp[2] - $temp[6];  
  71. $h = $temp[3] - $temp[7];  
  72. unset($temp);  
  73. $label = “文字區域”;  
  74. }  
  75. if( ($ground_w<$w) || ($ground_h<$h) )  
  76. {  
  77. echo “需要加水印的圖片的長度或寬度比水印”.$label.”還小,無法生成水??!”;  
  78. return;  
  79. }  
  80. switch($waterPos)  
  81. {  
  82. case 0://隨機  
  83. $posX = rand(0,($ground_w - $w));  
  84. $posY = rand(0,($ground_h - $h));  
  85. break;  
  86. case 1://1為頂端居左  
  87. $posX = 0;  
  88. $posY = 0;  
  89. break;  
  90. case 2://2為頂端居中  
  91. $posX = ($ground_w - $w) / 2;  
  92. $posY = 0;  
  93. break;  
  94. case 3://3為頂端居右  
  95. $posX = $ground_w - $w;  
  96. $posY = 0;  
  97. break;  
  98. case 4://4為中部居左  
  99. $posX = 0;  
  100. $posY = ($ground_h - $h) / 2;  
  101. break;  
  102. case 5://5為中部居中  
  103. $posX = ($ground_w - $w) / 2;  
  104. $posY = ($ground_h - $h) / 2;  
  105. break;  
  106. case 6://6為中部居右  
  107. $posX = $ground_w - $w;  
  108. $posY = ($ground_h - $h) / 2;  
  109. break;  
  110. case 7://7為底端居左  
  111. $posX = 0;  
  112. $posY = $ground_h - $h;  
  113. break;  
  114. case 8://8為底端居中  
  115. $posX = ($ground_w - $w) / 2;  
  116. $posY = $ground_h - $h;  
  117. break;  
  118. case 9://9為底端居右  
  119. $posX = $ground_w - $w;  
  120. $posY = $ground_h - $h;  
  121. break;  
  122. default://隨機  
  123. $posX = rand(0,($ground_w - $w));  
  124. $posY = rand(0,($ground_h - $h));  
  125. break;  
  126.  
  127. //設定圖像的混色模式  
  128. imagealphablending($ground_im, true); 
  129.  
  130. if($isWaterImage)//圖片水印  
  131. {  
  132. imagecopy($ground_im$water_im$posX$posY, 0, 0, $water_w,$water_h);//拷貝水印到目標文件  
  133. }  
  134. else//文字水印  
  135. {  
  136. if( !emptyempty($textColor) && (strlen($textColor)==7) )  
  137. {  
  138. $R = hexdec(substr($textColor,1,2));  
  139. $G = hexdec(substr($textColor,3,2));  
  140. $B = hexdec(substr($textColor,5));  
  141. }  
  142. else  
  143. {  
  144. die(”水印文字顏色格式不正確!”);  
  145. }  
  146. imagestring ( $ground_im$textFont$posX$posY$waterText, imagecolorallocate($ground_im$R$G$B));  
  147.  
  148. //生成水印后的圖片  
  149. @unlink($groundImage);  
  150. switch($ground_info[2])//取得背景圖片的格式  
  151. {  
  152. case 1:imagegif($ground_im,$groundImage);break;  
  153. case 2:imagejpeg($ground_im,$groundImage);break;  
  154. case 3:imagepng($ground_im,$groundImage);break;  
  155. default:die($errorMsg);  
  156.  
  157. //釋放內存  
  158. if(isset($water_info)) unset($water_info);  
  159. if(isset($water_im)) imagedestroy($water_im);  
  160. unset($ground_info);  
  161. imagedestroy($ground_im);  
  162. }  
  163. //—————————————————————————————  
  164. $id=$_REQUEST['id'];  
  165. $num = count($_FILES['userfile']['name']);  
  166. print_r($_FILES['userfile']);  
  167. print_r($_FILES['userfile']['name']); 
  168.  
  169. echo $num;  
  170. echo “<bR>”;  
  171. if(isset($id)){  
  172. for($i=0;$i<$id;$i++){ 
  173.  
  174. if(isset($_FILES) && !emptyempty($_FILES['userfile']) && $_FILES['userfile']['size']>0)  
  175. {  
  176. $uploadfile = “./”.time().”_”.$_FILES['userfile'][name][$i];  
  177. echo “<br>”;  
  178. echo $uploadfile;  
  179. if (copy($_FILES['userfile']['tmp_name'][$i], $uploadfile))  
  180. {  
  181. echo “OK<br>”; 
  182.  
  183. //文字水印  
  184. //imageWaterMark($uploadfile,5,”",”HTTP://www.lvye.info”,5,”#cccccc“); 
  185.  
  186. //圖片水印  
  187. $waterImage=”logo_ok1.gif”;//水印圖片路徑  
  188. imageWaterMark($uploadfile,9,$waterImage); 
  189.  
  190. echo “<img src=”".$uploadfile.”” border=”0”>”;  
  191. }  
  192. else  
  193. {  
  194. echo “Fail<br>”;  
  195. }  
  196. }  
  197. }  
  198.  
  199. ?>  
  200. <form enctype=”multipart/form-data” method=”POST”>  
  201. <?php  
  202. for($a=0;$a<$id;$a++){  
  203. echo “文件: <input name=”userfile[]” type=”file”><br>”; 
  204.  
  205. }  
  206. ?>  
  207. <input type=”submit” value=”上傳”>  
  208. </form>  
  209. ?> 
  210.  
  211. //下面這段代碼是一段圖片上傳并且給上傳的圖片加水印 
  212.  
  213. 參數說明:  
  214. $max_file_size  : 上傳文件大小限制, 單位BYTE  
  215. $destination_folder : 上傳文件路徑  
  216. $watermark   : 是否附加水印(1為加水印,其他為不加水印);  
  217. 使用說明:  
  218. 1. 將PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;號去掉,因為我們要用到GD庫;  
  219. 2. 將extension_dir =改為你的php_gd2.dll所在目錄;  
  220. 3. http://www.111cn.net/php.asp;  
  221. ****************************************************/  
  222. //上傳文件類型列表  
  223. $uptypes=array(  
  224.     'image/jpg',   
  225.     'image/jpeg',  
  226.     'image/png',  
  227.     'image/pjpeg',  
  228.     'image/gif',  
  229.     'image/bmp',  
  230.     'image/x-png'  
  231. );  
  232. $max_file_size=2000000;     //上傳文件大小限制, 單位BYTE  
  233. $destination_folder="uploadimg/"//上傳文件路徑  
  234. $watermark=1;      //是否附加水印(1為加水印,其他為不加水印);  
  235. $watertype=1;      //水印類型(1為文字,2為圖片)  
  236. $waterposition=1;     //水印位置(1為左下角,2為右下角,3為左上角,4為右上角,5為居中);  
  237. $waterstring="http://www.xplore.cn/";  //水印字符串  
  238. $waterimg="xplore.gif";    //水印圖片  
  239. $imgpreview=1;      //是否生成預覽圖(1為生成,其他為不生成);  
  240. $imgpreviewsize=1/2;    //縮略圖比例  
  241. ?>  
  242. <html>  
  243. <head>  
  244. <title>ZwelL圖片上傳程序</title>  
  245. <style type="text/css教程">  
  246. <!--  
  247. body  
  248. {  
  249.      font-size: 9pt;  
  250. }  
  251. input  
  252. {  
  253.      background-color: #66CCFF;  
  254.      border: 1px inset #CCCCCC;  
  255. }  
  256. -->  
  257. </style>  
  258. </head>  
  259. <body>  
  260. <form enctype="multipart/form-data" method="post" name="upform">  
  261.   上傳文件:  
  262.   <input name="upfile" type="file">  
  263.   <input type="submit" value="上傳"><br>  
  264.   允許上傳的文件類型為:<?=implode(', ',$uptypes)?>  
  265. </form>  
  266. <?php  
  267. if ($_SERVER['REQUEST_METHOD'] == 'POST')  
  268. {  
  269.     if (!is_uploaded_file($_FILES["upfile"][tmp_name]))  
  270.     //是否存在文件  
  271.     {  
  272.          echo "圖片不存在www.111cn.net!";  
  273.          exit;  
  274.     }  
  275.     $file = $_FILES["upfile"];  
  276.     if($max_file_size < $file["size"])  
  277.     //檢查文件大小  
  278.     {  
  279.         echo "文件太大!";  
  280.         exit;  
  281.     }  
  282.     if(!in_array($file["type"], $uptypes))  
  283.     //檢查文件類型  
  284.     {  
  285.         echo "文件類型不符!".$file["type"];  
  286.         exit;  
  287.     }  
  288.     if(!file_exists($destination_folder))  
  289.     {  
  290.         mkdir($destination_folder);  
  291.     }  
  292.     $filename=$file["tmp_name"];  
  293.     $image_size = getimagesize($filename);  
  294.     $pinfo=pathinfo($file["name"]);  
  295.     $ftype=$pinfo['extension'];  
  296.     $destination = $destination_folder.time().".".$ftype;  
  297.     if (file_exists($destination) && $overwrite != true)  
  298.     {  
  299.         echo "同名文件已經存在了";  
  300.         exit;  
  301.     }  
  302.     if(!move_uploaded_file ($filename$destination))  
  303.     {  
  304.         echo "移動文件出錯";  
  305.         exit;  
  306.     }  
  307.     $pinfo=pathinfo($destination);  
  308.     $fname=$pinfo[basename];  
  309.     echo " <font color=red>已經成功上傳</font><br>文件名:  <font color=blue>".$destination_folder.$fname."</font><br>";  
  310.     echo " 寬度:".$image_size[0];  
  311.     echo " 長度:".$image_size[1];  
  312.     echo "<br> 大小:".$file["size"]." bytes";  
  313.     if($watermark==1)  
  314.     {  
  315.         $iinfo=getimagesize($destination,$iinfo);  
  316.         $nimage=imagecreatetruecolor($image_size[0],$image_size[1]);  
  317.         $white=imagecolorallocate($nimage,255,255,255);  
  318.         $black=imagecolorallocate($nimage,0,0,0);  
  319.         $red=imagecolorallocate($nimage,255,0,0);  
  320.         imagefill($nimage,0,0,$white);  
  321.         switch ($iinfo[2])  
  322.         {  
  323.             case 1:  
  324.             $simage =imagecreatefromgif($destination);  
  325.             break;  
  326.             case 2:  
  327.             $simage =imagecreatefromjpeg($destination);  
  328.             break;  
  329.             case 3:  
  330.             $simage =imagecreatefrompng($destination);  
  331.             break;  
  332.             case 6:  
  333.             $simage =imagecreatefromwbmp($destination);  
  334.             break;  
  335.             default:  
  336.             die("不支持的文件類型");  
  337.             exit;  
  338.         }  
  339.         imagecopy($nimage,$simage,0,0,0,0,$image_size[0],$image_size[1]);  
  340.         imagefilledrectangle($nimage,1,$image_size[1]-15,80,$image_size[1],$white);  
  341.         switch($watertype)  
  342.         {  
  343.             case 1:   //加水印字符串  
  344.             imagestring($nimage,2,3,$image_size[1]-15,$waterstring,$black);  
  345.             break;  
  346.             case 2:   //加水印圖片  
  347.             $simage1 =imagecreatefromgif("xplore.gif");  
  348.             imagecopy($nimage,$simage1,0,0,0,0,85,15);  
  349.             imagedestroy($simage1);  
  350.             break;  
  351.         }  
  352.         switch ($iinfo[2])  
  353.         {  
  354.             case 1:  
  355.             //imagegif($nimage, $destination);  
  356.             imagejpeg($nimage$destination);  
  357.             break;  
  358.             case 2:  
  359.             imagejpeg($nimage$destination);  
  360.             break;  
  361.             case 3:  
  362.             imagepng($nimage$destination);  
  363.             break;  
  364.             case 6:  
  365.             imagewbmp($nimage$destination);  
  366.             //imagejpeg($nimage, $destination);  
  367.             break;  
  368.         }  
  369.         //覆蓋原上傳文件  
  370.         imagedestroy($nimage);  
  371.         imagedestroy($simage);  
  372.     } //開源代碼Vevb.com 
  373.     if($imgpreview==1)  
  374.     {  
  375.     echo "<br>圖片預覽:<br>";  
  376.     echo "<img src="".$destination."" width=".($image_size[0]*$imgpreviewsize)." height=".($image_size[1]*$imgpreviewsize);  
  377.     echo " alt="圖片預覽: 文件名:".$destination." www.111cn.net上傳時間:">";  
  378.     }  
  379. }

上一篇:php靜態文件生成類

下一篇:php adodbzip 類

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91社区国产高清| 欧美高清激情视频| 欧美日韩国产中文字幕| 欧美性xxxxx极品| 国产精品91在线| 欧美激情视频一区二区三区不卡| 这里只有精品久久| 欧美性精品220| 色综合久久中文字幕综合网小说| 色噜噜亚洲精品中文字幕| 中文字幕日韩视频| 日韩禁在线播放| 在线视频欧美日韩| 欧美电影免费观看大全| 一区二区三区四区精品| 中文精品99久久国产香蕉| 91精品国产91久久久久久久久| 久久躁狠狠躁夜夜爽| 欧美日韩精品在线视频| 亚洲精品免费av| 91在线国产电影| 欧美日韩一区二区三区| 日韩视频在线观看免费| 亚洲a区在线视频| 社区色欧美激情 | 亚洲综合av影视| 欧美日韩午夜激情| 中文综合在线观看| 日韩精品在线视频美女| 91在线免费看网站| 欧美极品欧美精品欧美视频| 欧美在线观看日本一区| 国产精品一区二区久久精品| 成人a免费视频| 成人午夜激情网| 欧美日韩在线影院| 丰满岳妇乱一区二区三区| 国产精品久久久久久久久久久新郎| 亚洲成人久久电影| 欧美极品第一页| 成人免费在线视频网址| 精品日韩美女的视频高清| 国产精品高潮呻吟久久av野狼| 97视频人免费观看| 日韩高清电影免费观看完整版| 91深夜福利视频| 欧美肥老妇视频| 正在播放欧美视频| 久久久久久尹人网香蕉| 亚洲国产古装精品网站| 麻豆国产精品va在线观看不卡| 国产成人精品亚洲精品| 最近2019年好看中文字幕视频| 亚洲国产天堂网精品网站| 欧美另类在线播放| 一本色道久久综合亚洲精品小说| 久久精品小视频| 亚洲激情国产精品| 国产精品免费久久久久影院| 欧美黑人又粗大| 亚洲aaa激情| 国内精品视频在线| 91精品久久久久久久久久入口| 亚洲性xxxx| 九九精品视频在线观看| 欧美日韩国产二区| 亚洲精品有码在线| 国产成+人+综合+亚洲欧美丁香花| 欧美老肥婆性猛交视频| 日韩美女av在线免费观看| 亚洲成人久久网| 日本午夜在线亚洲.国产| 91九色视频导航| 日韩色av导航| 久久久人成影片一区二区三区观看| 久久久久中文字幕| 久久久www成人免费精品| 久久国产精品99国产精| 欧美成人激情在线| 日韩一级黄色av| 成人亲热视频网站| 亚洲欧美在线免费观看| 最新91在线视频| 日韩精品高清在线| 国产色婷婷国产综合在线理论片a| 午夜精品三级视频福利| 欧美一级电影在线| 中文字幕精品国产| 欧美精品一区二区免费| 97精品国产91久久久久久| 成人久久久久久久| 亚洲毛片在线观看.| 欧美久久久精品| 在线播放亚洲激情| 亚洲精品日韩久久久| 亚洲一区二区三区777| 国产精品www色诱视频| 久久夜色精品亚洲噜噜国产mv| 精品小视频在线| 国产精品久久久久久久久久| 在线激情影院一区| 亚洲一区二区三区四区视频| 久久露脸国产精品| 久久久免费精品| 成人精品aaaa网站| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美午夜女人视频在线| 国产精品国模在线| 日本三级久久久| 黄色成人在线免费| 亚洲精品在线视频| 26uuu亚洲国产精品| 热久久99这里有精品| 欧美wwwxxxx| 亚洲精品短视频| 欧美福利视频网站| 亚洲电影免费观看高清| 国产日韩欧美综合| 亚州国产精品久久久| 92裸体在线视频网站| 国产精品网站大全| www.xxxx欧美| 久久精品视频播放| 亚洲精品电影网站| 国产精品视频网站| 91精品国产亚洲| 欧美国产日韩一区二区| 欧美在线一区二区视频| 九九九热精品免费视频观看网站| 亚洲成avwww人| 日韩在线观看免费网站| 国产欧美日韩专区发布| 国产亚洲一级高清| 久久人人爽人人爽人人片亚洲| 日韩免费av在线| 亚洲日韩欧美视频| 国产91精品黑色丝袜高跟鞋| 欧美日韩国产一区中文午夜| 日韩av影片在线观看| 中文字幕亚洲情99在线| 欧美精品在线免费| 岛国av午夜精品| 精品无人区太爽高潮在线播放| 九九视频这里只有精品| 日韩精品免费一线在线观看| 亚洲乱码国产乱码精品精| 国产精品视频中文字幕91| 亚洲精品一区中文字幕乱码| 97精品国产aⅴ7777| 日韩在线观看免费高清完整版| 欧美激情性做爰免费视频| 欧美精品在线网站| 亚洲午夜未删减在线观看| 在线观看国产精品日韩av| 精品亚洲永久免费精品| 久久精品视频在线| 亚洲国产欧美自拍| 亚洲午夜色婷婷在线| 国产亚洲人成a一在线v站| 欧美日韩国产中文精品字幕自在自线| 国产精品精品视频一区二区三区| 欧美在线www| 亚洲在线免费观看| 国产欧美精品一区二区|