2011-08-17 99 views
1

我有一個圖像,在其RGB組件是完全白色,具有不同的阿爾法 - 例如,在RGBA格式0xFFFFFF09。但是,當我用UIImage或CGImage API加載這個圖像,然後在CGBitmapContext中繪製它時,它會出現灰度,將RGB組件設置爲alpha的值 - 所以在上例中,像素會出來0x09090909而不是0xFFFFFF09。因此,應該是白色的,透明度不同的圖像,實際上是透明的,而不是透明的。我加載的PNG文件沒有問題 - 各種圖形程序都能正確顯示它。UIImage/CGImage改變我的像素顏色

我想知道這是否可能與我使用kCGImageAlphaPremultipliedFirst有關,但我無法試驗它,因爲CGBitmapContextCreate失敗並顯示其他值。

這裏最終的目的是獲得像素數據,我可以上傳到紋理與glTexImage2D。我可以使用libPNG完全繞過iOS API,但還有其他建議嗎?非常感謝。

+0

這個問題已經過時了嗎?如果不是,你能否提供代碼來加載示例項目中的圖像以重現問題? – Kjellski

+0

感謝您的報價。我無法弄清楚這一點,因此放棄了CGImage API的使用,並直接使用libpng加載圖像。 – RedMarbleGames

回答

0

黑色背景上的白色與x的alpha是所有組件中對應於x的灰色值。這就是乘法混合是如何工作的。

+1

感謝您的回答,但它並沒有真正解決這個問題,即如何保持從文件加載的數據的完整性*無需乘法混合。當我在圖像編輯器中加載這個圖形時,它是一個逐漸消失的白色圖像 - 根本沒有灰色。但iOS會在數據加載時更改數據,這就是我想要避免的。 – RedMarbleGames