2011-07-05 86 views
2

我使用一些代碼:PHP。 Imagecolorallocate返回false

$colors = array(); 
$colors['test'] = imagecolorallocate($img, 0 ,1 ,2); 
.... 

它的工作,直到我改變圖片等
imagecolorallocateimagecolorallocatealphafalse
$img後是正確的圖像,即imagepng打印它正確

如何使imagecolorallocate工作?

+2

你是否使用身份運算符('===')檢查'false'? – Jon

+0

我使用var_dump($ colors); die(); – RiaD

+1

它是什麼樣的圖像失敗'imagecolorallocate'?一個8位圖像? –

回答

1

評論這個函數的文檔上:

如果你即使在情況下它 不分配你希望它 可能是因爲您的圖像顏色 分配表的顏色。 GIF和8位PNG 圖像非常容易受此影響。

如果您使用GIF和PNG嘗試 從表中刪除顏色, 應讓您分配另一個顏色。

如果索引圖像(8位或更少)中的源圖像確保有額外的顏色空間。例如。在這種情況下,8位圖像可能不會使用來自調色板的所有256種顏色,否則該功能將成功並且不會。

編輯

我看着你的形象,這是逸岸使用所有256種顏色的8位PNG圖片。嘗試將其轉換爲真彩色圖像(通過Photoshop或將圖像複製到通過imagecreatetruecolor()創建的GD圖像);做所有的編輯,然後保存爲GIF。

+0

謝謝,請嘗試現在做。 – RiaD

+0

現在,它的工作,謝謝 – RiaD