PHP實現上傳文件生成小圖加文字的實例

文章發佈於 : 2007-06-06 15:36:59 | 文章分類 : 程式相關
標籤 :

<?php
//自動縮圖$srcFile原文件,大圖;$photo_small目標文件,小圖;$dstW,$dstH是小圖的寬,高。
function makethumb($srcFile,$photo_small,$dstW,$dstH) {
    $data = GetImageSize($srcFile);
    switch ($data[2]) {
    case 1: //圖片類型,1是GIF圖
        $im = @ImageCreateFromGIF($srcFile);
        break;
    case 2: //圖片類型,2是JPG圖
        $im = @imagecreatefromjpeg($srcFile);
        break;
    case 3: //圖片類型,3是PNG圖
        $im = @ImageCreateFromPNG($srcFile);
        break;
    }
    $srcW=ImageSX($im);//原始圖片的寬度,也可以使用$data[0]
    $srcH=ImageSY($im);//原始圖片的高度,也可以使用$data[1]
    $srcX=0;//來源圖的坐標x,y
    $srcY=0;
   
    if(($srcW/$dstW)>($srcH/$dstH)){//得出要生成圖片的長寬
        $dstW2=$dstW;//輸出圖片的寬度、高度
        $dstH2=$srcH*$dstW/$srcW;
        $dstX=0;//輸出圖形的坐標x,y
        $dstY=($dstH-$dstH2)/2;
    }else{
        $dstH2=$dstH;//輸出圖片的寬度、高度
        $dstW2=$srcW*$dstW/$srcH;
        $dstX=($dstW-$dstW2)/2;//輸出圖形的坐標x,y
        $dstY=0;
    }

    $ni=imagecreatetruecolor($dstW,$dstH);//ImageCreate($dstW,$dstH);畫出空白花布的大小
    $colorBody=imagecolorallocate($ni,235,234,233);//定義背景顏色
    imagefill($ni,0,0,$colorBody);//填充背景顏色
    ImageCopyResized($ni,$im,$dstX,$dstY,$srcX,$srcY,$dstW2,$dstH2,$srcW,$srcH);
    ImageJpeg($ni,$photo_small);
    //ImageJpeg($ni); //在顯示圖片時用,把注釋取消,可以直接在頁面顯示出圖片。
}

//生成帶有版權信息的圖片
function makeCopyright($srcFile,$dstFile,$dstW,$dstH){
    $data = GetImageSize($srcFile);
    switch ($data[2]) {
        case 1: //圖片類型,1是GIF圖
            $srcImg = @ImageCreateFromGIF($srcFile);
            break;
    case 2: //圖片類型,2是JPG圖
            $srcImg = @imagecreatefromjpeg($srcFile);
            break;
    case 3: //圖片類型,3是PNG圖
            $srcImg = @ImageCreateFromPNG($srcFile);
            break;
    }
    $srcW=ImageSX($srcImg);//原始圖片的寬度,也可以使用$data[0]
    $srcH=ImageSY($srcImg);//原始圖片的高度,也可以使用$data[1]

    if(($srcW/$dstW)>($srcH/$dstH)){//得出要生成圖片的長寬
        $dstW2=$dstW;//輸出圖片的寬度、高度
        $dstH2=$srcH*$dstW/$srcW;
    }else{
            $dstH2=$dstH;//輸出圖片的寬度、高度
            $dstW2=$srcW*$dstW/$srcH;
    }

    $dstimg=imagecreatetruecolor($dstW2,$dstH2);//畫出空白花布的大小
    ImageCopyResized($dstimg,$srcImg,0,0,0,0,$dstW2,$dstH2,$srcW,$srcH);

    //定義要寫入的文字
    $word="http://www.webjx.com";//文字
    $font=5;//字體
    $wordColor=imagecolorallocate($dstimg,0x08,0x00,0x00);//顏色
    $wordX=$dstW2-200;//x坐標
    $wordY=$dstH2-20;//y坐標
    imagestring($dstimg,$font,$wordX,$wordY,$word,$wordColor);//寫入文字
    ImageJpeg($dstimg,$dstFile);
    //ImageJpeg($ni); //在顯示圖片時用,把注釋取消,可以直接在頁面顯示出圖片。
}

//調用
$srcFile=$pimg_name;//取得文件擴展名:
$type=substr(strrchr($pimg_name,"."),1);
$photo_ID=date("YmdHis");
$dst_small=$photo_ID."_s.".$type; //小圖
$dst_big=$photo_ID."_b.".$type; //大圖
makethumb($pimg,"../cpzs/".$dst_small,120,90);//120,90為小圖寬,高
makeCopyright($pimg,"../cpzs/".$dst_big,600,480);

(copy($pimg,"../cpzs/".$dst_big)) ? echo "文件上傳成功<br>" : echo "文件上傳失敗<br>";
?>
 Love is waiting so you don't have to. Join Date.com for free!
 Join Asia FriendFinder the Largest Asian Dating Site on the Web for FREE!
 Kaspersky Security for Internet Gateway 7.0
 Know when to sell on eBay using research

閱讀全文 | 回 應(0) |

發 表 回 覆  (*代表必須輸入的欄位)

  • *姓名 :  

  • email :  

  •   網址 :   請用http://開頭喔

  • *回覆內容 :  

  • *驗證碼 : 
  • This is a captcha-picture. It is used to prevent mass-access by robots. (see: www.captcha.net)

    請輸入上面圖案內的英文字母與數字,英文字母大小寫不受影響

  • 請原諒阿維這個懶惰鬼沒有寫新回覆通知的功能,
    如果需要回覆通知,歡迎訂閱回覆的RSS 
  •  會開新的視窗,不會影響回覆的內容喔 :)