24bit.jpg 8bit-300x213.jpg

一口一...我用了CI的Image類別,但是上傳後的圖片都失去原始的顏色了!後來記得之前有一本「專業PHP5程式設計指南」有提供縮圖章節,索性就重啃了一遍,其中有一段提到:

imagecreatetruecolor函式是被用來產生出一個準備要放置縮圖的空白圖(以PHP變數的型態存在於記憶體當中),注意涵式名稱所暗示的,這個函數將會產生出一個「真實色彩」(true color) (24位元)的圖,而不會像imagecreate那樣,只能取得「以調色盤為基礎」(palette-based) (8位元)的圖。

接著續繼趴CI的User Guide(中)(英)提到Image類別支援使用GD, GD2, ImageMagick, NetPBM的圖型函式庫。我目前設定是GD,所以我猜想會不會GD是舊函式庫,所以沒有imagecreatetruecolor()?但是工作上的同事告訴我他在GD圖型庫的環境中,能正常使用imagecreatetruecolor()

一皿一||||見鬼了!!,害我又不得開啟system\libraries\Image_lib.php進行人工趴碼了@_@,後來發現在第504行類別判斷竟然是這樣的

    if ($this->image_library == 'gd2' AND function_exists('imagecreatetruecolor'))		
    {
        $create = 'imagecreatetruecolor';
        $copy = 'imagecopyresampled';
    }	else	{
        $create = 'imagecreate';	
        $copy = 'imagecopyresized';
    }

囧rz..果然,他把GD擋掉了,他似乎也認為只有GD2才有資格用imagecreatetruecolor(),所以我只好把他修正為如下

    if (function_exists('imagecreatetruecolor'))		
    {
        $create = 'imagecreatetruecolor';
        $copy = 'imagecopyresampled';
    }	else	{
        $create = 'imagecreate';	
        $copy = 'imagecopyresized';
    }

奇怪,明明多判斷是不是GD2是多餘的呀XD,檢查有沒有imagecreatetruecolor()才是直覺的判斷吧!

低溫烘培 發表在 痞客邦 PIXNET 留言(0) 人氣()