在模拟器和实际设备上的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不会“破碎”。
我想......
(我知道我不是一个谁问这个问题,但...),那么如何是在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