Navigation


RSS: 訂閱阿維雜記本



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

2007-06-06 15:36:59, 程式相關, 阿維, 回 應(0), Translate

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

» 加入書籤  AddThis Social Bookmark Button   收藏這篇文章到HEMiDEMi   收藏這篇文章到MyShare   收藏這篇文章到Digg   收藏這篇文章到del.icio.us   收藏這篇文章到Furl   收藏這篇文章到YahooMyWeb  

» 目前回應(0)   » 發表回應   » 標籤 :  

» 引用網址

» Translate this article to English or 简体中文


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

2007-06-01 13:23:14, 程式相關, 阿維, 回 應(0), Translate

以下文章是從凱大人的 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>

» 加入書籤  AddThis Social Bookmark Button   收藏這篇文章到HEMiDEMi   收藏這篇文章到MyShare   收藏這篇文章到Digg   收藏這篇文章到del.icio.us   收藏這篇文章到Furl   收藏這篇文章到YahooMyWeb  

» 目前回應(0)   » 發表回應   » 標籤 :  

» 引用網址

» Translate this article to English or 简体中文


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

2007-05-30 16:50:32, 程式相關, 阿維, 回 應(2), Translate

重要更新
凱大人發現將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版本已經公佈,所以搶鮮版就停止下載囉. 正式版下載位址

» 加入書籤  AddThis Social Bookmark Button   收藏這篇文章到HEMiDEMi   收藏這篇文章到MyShare   收藏這篇文章到Digg   收藏這篇文章到del.icio.us   收藏這篇文章到Furl   收藏這篇文章到YahooMyWeb  

» 目前回應(2)   » 發表回應   » 標籤 :  

» 引用網址

» Translate this article to English or 简体中文


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

2007-05-30 09:22:35, 程式相關, 阿維, 回 應(8), Translate

丹尼老大在今天發表了 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 程式

» 加入書籤  AddThis Social Bookmark Button   收藏這篇文章到HEMiDEMi   收藏這篇文章到MyShare   收藏這篇文章到Digg   收藏這篇文章到del.icio.us   收藏這篇文章到Furl   收藏這篇文章到YahooMyWeb  

» 目前回應(8)   » 發表回應   » 標籤 :  

» 引用網址

» Translate this article to English or 简体中文


<<< 第一頁  << 上一頁  下一頁 >>  最後一頁 >>>  

搜 尋 文 章


歷 史 上 的 今 天

文 章 分 類  (共 1215 篇)


今 日 新 增 文 章



最 近 10 篇 回 覆


訂 閱 文 章


網 路 資 訊

好 站 連 結


部 落 格 聯 播


最 近 來 訪 的 朋 友


功 能 選 單

    帳號 :

    密碼 :

      


Google PageRank Checker    Blogarama - The Blog Directory         

counter    BlogLook Score and Rank       Personal Blogs -  Blog Catalog Blog Directory    Personal Blogs - Blog Top Sites

Blog Directory       Blog Directory & Search engine