给定一个 UIImage
/NSImage
或 NSData
实例,如果 PNG 是8位还是24位?如果它有 alpha channel ?
是否有任何 Cocoa/Cocoa Touch API 对此有帮助?
为避免重复,这里是 non-programatic answer对于这个问题,这里有一个方法来找出 if an image is a PNG .
作为一个长期在J2ME平台上编程的人,我对PNG格式非常了解。如果您将原始数据作为 NSData
实例,则查找信息非常容易,因为 PNG 格式非常简单。
PNG 文件以签名开始,然后包含一系列 block 。您只对第一个 block IHDR
感兴趣。
所以,代码应该是这样的:
Width: 4 bytes
Height: 4 bytes
Bit depth: 1 byte
Color type: 1 byte
Compression method: 1 byte
Filter method: 1 byte
Interlace method: 1 byte
对于 alpha,您还应该检查文件中是否存在 tRNS
(透明度) block 。要找到一个 block ,您可以使用以下算法:
编辑:
要查找有关 UIImage
实例的信息,请获取其 CGImage
并使用 CGImageGet...
函数之一。
需要注意的是,PNG文件中的所有整数值都是以Big-endian格式读取的。
关于ios - 查明 PNG 是 8 位还是 24 位和 alpha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16081966/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |