鉴于UIImage
/ NSImage
或NSData
实例,如果PNG为8位或24位,您如何找到以编程方式?如果它有alpha通道?
是否有任何Cocoa / Cocoa Touch API可以帮助解决这个问题?
为避免重复,这里是问题的non-programatic answer,这是找出if an image is a PNG的方法。
答案 0 :(得分:4)
作为一个在J2ME平台上长时间编程的人,我非常了解PNG格式。如果您将原始数据作为NSData
实例,那么查找信息非常简单,因为PNG格式非常简单。
PNG文件以签名开头,然后包含一系列块。您只对第一个块IHDR
感兴趣。
所以,代码应该是:
宽度:4个字节
高度:4个字节
位深度:1个字节
颜色类型:1字节
压缩方法:1字节
过滤方式:1字节
隔行扫描方式:1字节
对于alpha,您还应该检查文件中是否有tRNS
(透明度)块。要查找块,您可以使用以下算法:
修改
要查找有关UIImage
个实例的信息,请获取其CGImage
并使用CGImageGet...
个函数之一。