1
我有我在開發的iPhone應用程序中運行的代碼。 基本上,代碼需要加載的圖片,並呼籲:在模擬器和實際設備上的iPhone圖像 - 不同bitsPerPixel值?
size_t bitsPerPixel = CGImageGetBitsPerPixel(imageRef);
我注意到,在iPhone模擬器這次調用返回24和設備本身,它返回32
這種行爲是設計? 是我可以控制的東西嗎?
我有我在開發的iPhone應用程序中運行的代碼。 基本上,代碼需要加載的圖片,並呼籲:在模擬器和實際設備上的iPhone圖像 - 不同bitsPerPixel值?
size_t bitsPerPixel = CGImageGetBitsPerPixel(imageRef);
我注意到,在iPhone模擬器這次調用返回24和設備本身,它返回32
這種行爲是設計? 是我可以控制的東西嗎?
我認爲這歸結於圖像格式。
當在iPhone應用程序中使用PNG時,構建過程中的部分構建過程將通過pngcrush實用程序放置PNG圖像,從而優化用於iPhone圖形處理器的圖像。這與iPhone的圖形處理器本身不能處理alpha有關,因此它依賴於預乘alpha值。
這可能是你所看到的差異。而在模擬器中看不到它的原因是模擬器使用Mac的grahics處理器,因此可以在本機處理PNG中的alpha,這意味着在構建過程中PNG不會「破碎」。
我想......
(我知道我不是一個誰問這個問題,但...),那麼如何是在App Store使用必須使用透明圖片其他應用程序?它們是.gif格式還是什麼? – ipodfreak0313 2011-06-01 21:27:59
@ ipodfreak0313 - iPhone可以處理透明的PNG,不需要使用GIF。它只是處理透明度的一種不同方式。在構建階段預先乘以alpha值是一種優化措施,可以節省iPhone在運行時必須執行的操作。 iPhone的GPU本身並不處理PNG的Alpha通道 - 這並不是說它不支持透明度 - 只是它在運行時速度較慢。未經優化的PNG可以使用透明度,但與經過優化的PNG相比,渲染速度較慢。 – Jasarien 2011-06-01 22:59:26
@Jansarien所以...我如何優化PNG? – ipodfreak0313 2011-06-02 00:15:59