程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP給圖片加水印實例代碼

PHP給圖片加水印實例代碼

編輯:關於PHP編程

       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所在目錄;  
    3. http://www.knowsky.com/php.asp;  
    ****************************************************/  
    //上傳文件類型列表  
    $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.xplore.cn/"; //水印字符串  
    $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 "<ccid_file values="" width=".($image_size[0]*$imgpreviewsize)." 
    height=".($image_size[1]*$imgpreviewsize);"  
        echo " alt="圖片預覽:r文件名:".$destination."r上傳
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved