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) |

 [部落格加速] mybloglog for php 重起...

文章發佈於 : 2007-06-01 13:23:14 | 文章分類 : 程式相關
標籤 :

以下文章是從凱大人的 mybloglog for php 重起...轉貼過來,
讓想要使用MyBlogLog PHP 版本的朋友可以參考一下喔

昨天晚上一直再看丹尼老大的 mybloglog cache
本來一直想不透要怎麼讓他可以 cache 又可以讓使用者的瀏覽紀錄能被記錄下來。

最後終於發現,需要另外自己多放一段 script 讓使用者去連結 mybloglog 的 tracer ..
所以上次的 mybloglog cache 是可以用的..;p...

不過我這次也改了一些地方,讓所有的使用者都有辦法可以用,只要主機有支援 curl 即可,甚至不需要 wget 或是 crontab ,就算主機商把 exec, system 關掉也沒關係...
新版在同樣的位置 mybloglog_cache.tgz
    安裝與使用方法如下:
    1. 將mybloglog_cache.php程式中第10行的$mblID修改為你的ID
    2. 將mybloglog_cache.php上傳到你放部落格程式的目錄
    3. 在放部落格程式的目錄下面再建立一個名稱為tmp的目錄
    4. 在要顯示MyBlogLog的位置加入下面語法

    <script src="mybloglog_cache.php"></script>
    <!-- 請更換 mlbID 為你的-->
    <script type="text/javascript" src="http://track3.mybloglog.com/js/jsserv.php?mblID=2007051223343302"></script>

 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) |

 [部落格加速] MyBlogLog Cache 0.2 PHP版本

文章發佈於 : 2007-05-30 16:50:32 | 文章分類 : 程式相關
標籤 :

重要更新
凱大人發現將MyBlogLog使用Cache的機制後將失去MyBlogLog的原有精神.
以下是凱大人的聲明

發現致命的問題點,請大家不要下載使用.....
MyBlogLog 本身就是靠該script進行 User Trace的結果,cache卻讓該Javascript完全無法在使用者端執行,
更無法知道正在讀取網頁的是哪個使用者,因此無法有任何新的 User 瀏覽紀錄,
這跟原來裝 MyBlogLog 的用途完全相反。

MyBlogLog 有時後會慢的原因就是,他要使用者連線到 tracr.mybloglog.com 這樣的東西去更新一些server端的資料。
同時也會帶他本身 MyBlogLog 的 session id 等過去。
但是用了cache ,所有的連線都是由web server 產生的,因此變得一點意義都沒有。


丹尼老大寫的 MyBlogLog Cache 0.2需要Crontab才能夠執行,
但是現在越來越多的虛擬主機商,取消了使用者可以自定義排程的功能.

因應這樣的現狀,凱大人在丹尼老大所寫的程式基礎上完成了 MyBlogLog Cache 0.2 PHP版本,
這個版本解決使用者沒有辦法在虛擬主機上面設定Crontab的問題,
在效能的處理上,使用了以下的方法
加上了兩段 expire time 的檢查,分別可以設定 mybloglog.php 的 expire time跟所有個人圖示的過期時間..
預設 mybloglog.php 的過期時間為 5 分鐘,圖示則為一天的過期檢查

安裝與使用方法如下:
1. 將mybloglog_cache.php程式中第10行$mblID修改為你的ID
2. 將mybloglog_cache.php上傳到你放部落格程式的目錄
3. 在放部落格程式的目錄下面再建立一個名稱為tmp的目錄
4. 在要顯示MyBlogLog的位置加入 include("mybloglog_cache.php"); 的語法

下載位址:
凱大人寄給我的版本是搶鮮版,後續會有詳細程式註解的完整版.
有興趣的朋友,可以點擊這裡下載 ( mybloglog_cache.zip 1.13K).
現在阿維將程式放在自己的虛擬主機上,如果流量太大,阿維會另外找地方放.
後續補充: 1. 凱大人的官方說明已經出來,大家可以過去參考 MyBlogLog Cache for PHP 版本 2. 正式release版本已經公佈,所以搶鮮版就停止下載囉. 正式版下載位址
 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

閱讀全文 | 回 應(2) |

 [部落格加速] 優化MyBlogLog 最新進度 - 0.2版釋出

文章發佈於 : 2007-05-30 09:22:35 | 文章分類 : 程式相關
標籤 :

丹尼老大在今天發表了 MyBlogLog Cache 0.2
這次的更新版本讓使用上的便利性提高了很多.
使用者可以快速的自定義下面幾項參數.
$count 指的是希望顯示的 avatar 總個數
$dis_col 表示每列顯示幾個 avatar
$img_size 代表 avatar 的大小

關於這個工具的安裝環境需求,根據丹尼老大在MyBlogLog Cache 0.1 半手工版的說明
* Perl, 版本需求不知, 我是用 5.8.8
* wget, 版本需求不知, 我是用 1.10.2
* UNIX: 我是在 Linux 上寫的, 搬到別的系統的話不知道會怎樣, 目前還沒測試過

安裝步驟
1. 下載 mybloglog.pl 並存放到某個目錄.
2. 修改 mybloglog.pl, 有 6 個變數要指定:
   * 指定 $cache_dir: 這個目錄是用來存放 download 下來的 avatar 以及產生的 mybloglog.php 的目錄.
     請指定一個從根目錄開始的絕對路徑.
   * 指定 $www_dir: 這個目錄是在 web server 上要存取 $cache_dir 的路徑,
     請指定一個從 Apache 的 DocumentRoot 開始的相對目錄路徑.
   * 指定 $mblID: 這個是你在 MyBlogLog 上的 ID, 長得類似 2007022422374540.
   * 指定 $c_rows: 這個是 avatar 的個數, 最大是 10, 目前會少一個, 請看後面已知問題
   * $count 指的是希望顯示的 avatar 總個數
   * $dis_col 表示每列顯示幾個 avatar
   * $img_size 代表 avatar 的大小
3. 設定 cronjob 自動執行該 perl 程式
 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

閱讀全文 | 回 應(8) |

 BlogShares Links Exchange

1. Step into the Nexus 2. Scary Personals 3. Scared Bunny
4. This Is A Cult 5. Its all about me 6. Webby's World
7. Flower Delivery 8. Mindblogging Stuff 9. Random Thoughts by R. U. Serious
10. Palmistry and Hand Analysis 11. Forward-and-Share 12. The Site With the Lamp
13. Free Sample Forager 14. Kosir 15. CRM Reports

 阿維推薦

1. ㄚ凱隨手記 2. ↖「懿」*瘋*堂↗ 3. A.D. Notepad 西元記事本
4. Liang's Blog 5. 硬是要學! 6. 北國風情
7. 綠色工廠 8. 淡淡的天空藍 9. 班大貓廢紙塗鴉部落格
10. 大豆剝落殼 11. SEO网站优化推广 12. lazy Guy
13. PHP 黑店 14. Meson手扎