PHP:實現給上傳圖片加浮水印的程式碼
用PHP給上傳圖片加浮水印的程式是通過判斷檔案類型建立圖形,然後把其複製到原建立的圖形上,填充並建立rectangle,以備寫入imagestring()或是原已經定好的映像程式當中判斷浮水印類型:一是字串,另是增加一個繪圖物件在上面。如果你對PHP的GD庫比較熟悉,看懂這篇文章一點都不難了!
/*****************************************************參數說明:$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.hackhome.com/"; //浮水印字串$waterimg="xplore.gif"; //浮水印圖片$imgpreview=1; //是否產生預覽圖(1為產生,其他為不產生);$imgpreviewsize=1/2; //縮圖比例?>
ZwelL圖片上傳程式檔案名稱: ".$destination_folder.$fname."
"; echo " 寬度:".$image_size[0]; echo " 長度:".$image_size[1]; echo "
大小:".$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 "
圖片預覽:
"; echo ""; }}?>