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>";
?>
» 引用網址
[部落格加速] mybloglog for php 重起...
以下文章是從凱大人的 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的位置加入下面語法
<!-- 請更換 mlbID 為你的-->
<script type="text/javascript" src="http://track3.mybloglog.com/js/jsserv.php?mblID=2007051223343302"></script>
» 引用網址
[部落格加速] MyBlogLog Cache 0.2 PHP版本
重要更新
凱大人發現將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版本已經公佈,所以搶鮮版就停止下載囉.
正式版下載位址
» 引用網址
[部落格加速] 優化MyBlogLog 最新進度 - 0.2版釋出
丹尼老大在今天發表了 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 程式
» 引用網址
