6 月
6
2007

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

<?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>";
?>

Related Posts

About the Author: 阿維

阿維雜記本的偷懶維護者

Comments are closed.