CodeIgniter的Image_lib可以快速的產生所想要的縮圖,也可以方便的加入浮水印,不過官方原始的類別無法處理PNG的透明背景層,所有含有透明背景的圖片都會變成黑色的背景。
最近剛好使用到也遇到了問題/__\,幸好透過官方的討論區,找到其它玩家的解決方式。你可以從這篇討論文章的串文,看到原文的解決方式,不過我仍然將解決的方式,重新發表在這邊分享給遇到同樣問題的人。
CodeIgniter的Image_lib可以快速的產生所想要的縮圖,也可以方便的加入浮水印,不過官方原始的類別無法處理PNG的透明背景層,所有含有透明背景的圖片都會變成黑色的背景。
最近剛好使用到也遇到了問題/__\,幸好透過官方的討論區,找到其它玩家的解決方式。你可以從這篇討論文章的串文,看到原文的解決方式,不過我仍然將解決的方式,重新發表在這邊分享給遇到同樣問題的人。
The library bug had be find by Tongshuai.It's seem because SESSION problem in different CI version.If you got the same trouble,you can try the solution that Tongshuai's comment (2009-04-24)
由網友Tongshuai測試之後發現有BUG,似乎是SESSION部分出了一些問題,很抱歉我沒有測試各CI版本,或許是CI版本的問題,但是Tongshuai也順便提供了他的解決方法,可以直接參考他的回覆內容(2009-04-24)
一口一...我用了CI的Image類別,但是上傳後的圖片都失去原始的顏色了!後來記得之前有一本「專業PHP5程式設計指南」有提供縮圖章節,索性就重啃了一遍,其中有一段提到:
imagecreatetruecolor函式是被用來產生出一個準備要放置縮圖的空白圖(以PHP變數的型態存在於記憶體當中),注意涵式名稱所暗示的,這個函數將會產生出一個「真實色彩」(true color) (24位元)的圖,而不會像imagecreate那樣,只能取得「以調色盤為基礎」(palette-based) (8位元)的圖。
//建立User物件(create user ORM)
$u = new User();
//使用自訂ID(use custom id)
$u->id = uuid();
//無法運作(It' can't working)
$u->save();
@_@真是的,所以我又開始趴原始碼了,找到判斷什麼時候做update什麼時候做insert動作的那部分。 如何做修改呢?(how to fix?)
找到欲修改的行數(find it on line 436 in libraries/datamapper.php)
if (!empty($data['id']))
{
//略(ignore)
}
後來修改程式如下(Fix It!!)
if (!empty($this->db->get_where($this->table,array('id'=> $data['id']))->num_rows))
{
//略(ignore)
}
現在可以使用自訂的函式或原本的自動增值(It's working well with custom id or auto_increment mode)
//建立User物件(create user ORM)
$u = new User();
//使用自訂ID(use the custom id)
//若你使用自動增值,你可以略忽下一行(if you use auto_increment mode,you can pass follow line)
$u->id = uuid();
//成功運作(It' working well )
$u->save();
換句話說,改完之後並不影響原本的運作,也就是如果你喜歡自動增值的方式,那就照官方的作法做吧! 還有…以後開始改用GeSHi,理由因是原本的SyntaxHighlighter顯示特別字串時會有問題,像是我如果打empty他顯示都會變成emptyempty兩次@_@,另外一個放棄SyntaxHighlighter原因是他的變色效果,在PHP和Javascript好像都一樣,所以我決定改用GeSHi了。而且GeSHi可接受你使用像是<?php的開頭,SyntaxHighlighter就不行了
//原始碼片斷(source)
if ($field == $this->updated_field)
{
// Update updated datetime
$this->{$field} = $timestamp;
}
//修正後的程式碼(fixed)
if ($field == $this->updated_field)
{
// Update updated datetime
$this->{$field} = $timestamp;
// Register changed existing
array_push($this->changed_existing,$field);
}
一、下載PEAR函式庫必要的「PEAR核心檔」即可,然後再下載所需的類別套件,以我為例就是「Pager套件」,最終的資料夾結構大概長這樣
二、將PEAR放到你的applicaiton/libraries/中,在application/libraries/中建立一個新檔,並命名為PEAR.php的類別檔(注意與applicaiton/libraries/PEAR底下的PEAR.php是不一樣的,不要混淆了),內容如下: