2010-11-04 71 views
2

我想用getimagesize或Imagick來區分PNG-8和PNG-24圖像,但我不太清楚如何去做。如何判斷圖像是否是PNG24或PNG8以及位數和通道數?

getimagesize不會爲我的PNG返回頻道,而是顯示mimetype。它適用於其他圖像並顯示正確的值,但對於PNG,它什麼都不顯示。

編輯:Imagick沒有安裝在我的環境,但gdlib是...

誰能幫助我一點嗎?

問候,
湯姆

EDIT2: 是否有可能做這樣的嗎?

//create png for tests 
    $testPng = imagecreatefrompng($file); 
    //test how many colors are used 
    $meta .= 'colors: ' . imagecolorstotal($testPng); 
    $meta .= ' truecolor: ' . imageistruecolor($testPng); 
    //destroy the test image 
    imagedestroy($testPng); 

如果truecolor爲false或未設置,它是一個png24?

+0

你可以使用ImageMagick嗎? – 2010-11-05 15:04:32

回答

1
+0

嘿,你的信息是非常有價值的,但它不能解決我的問題,因爲在文件中沒有元數據可以告訴我它是png-8還是png-24。我只獲得「Software:ImageReady」,因爲它們是在Photoshop中製作的。 – shapeshifta 2010-11-05 09:44:06

1

getimagesize()似乎做的伎倆:

bits是每種顏色的位數。

甚至不需要GD。

+1

是的,我知道,但getimagesize()確實返回8爲png-8和png-24以及... :( – shapeshifta 2010-11-05 17:12:20

+0

@shapeshifta奇怪。它爲png-24顯示多少個頻道? – 2010-11-05 17:13:34

+0

@Pekka:我是但它沒有顯示任何png的通道,但應該有3個,因爲它是rgb。另一方面,getimagesize()似乎顯示了我的其他圖像(如jpg或gifs)的正確值(這可能相當不正確文檔狀態)... – shapeshifta 2010-11-06 14:46:53

相關問題