在模拟器和实际设备上的iPhone图像 - 不同bitsPerPixel值?

问题描述:

我有我在开发的iPhone应用程序中运行的代码。 基本上,代码需要加载的图片,并呼吁:在模拟器和实际设备上的iPhone图像 - 不同bitsPerPixel值?

size_t bitsPerPixel    = CGImageGetBitsPerPixel(imageRef); 

我注意到,在iPhone模拟器这次调用返回24和设备本身,它返回32

这种行为是设计? 是我可以控制的东西吗?

我认为这归结于图像格式。

当在iPhone应用程序中使用PNG时,构建过程中的部分构建过程将通过pngcrush实用程序放置PNG图像,从而优化用于iPhone图形处理器的图像。这与iPhone的图形处理器本身不能处理alpha有关,因此它依赖于预乘alpha值。

这可能是你所看到的差异。而在模拟器中看不到它的原因是模拟器使用Mac的grahics处理器,因此可以在本机处理PNG中的alpha,这意味着在构建过程中PNG不会“破碎”。

我想......

+0

(我知道我不是一个谁问这个问题,但...),那么如何是在App Store使用必须使用透明图片其他应用程序?它们是.gif格式还是什么? – ipodfreak0313 2011-06-01 21:27:59

+0

@ ipodfreak0313 - iPhone可以处理透明的PNG,不需要使用GIF。它只是处理透明度的一种不同方式。在构建阶段预先乘以alpha值是一种优化措施,可以节省iPhone在运行时必须执行的操作。 iPhone的GPU本身并不处理PNG的Alpha通道 - 这并不是说它不支持透明度 - 只是它在运行时速度较慢。未经优化的PNG可以使用透明度,但与经过优化的PNG相比,渲染速度较慢。 – Jasarien 2011-06-01 22:59:26

+0

@Jansarien所以...我如何优化PNG? – ipodfreak0313 2011-06-02 00:15:59