常用的UIImage加载图片的方式有以下几种:
[UIImage imageNamed:name]
[UIImage imageWithContentsOfFile:name]
[UIImage imageWithData:data]
[UIImage imageWithCGImage:imageRef]
[UIImage imageWithCIImage:obj]
以上方法中imageNamed:
和imageWitData:
应用程序会对其自动缓存,不过,它们缓存的实现方式并不相同,后面会有详细说明。除去这两个方法以外剩下的三个方法默认情况下是不会产生缓存的,这三个方法的主要区别在于它们的数据源:imageWithContentsOfFile:
从指定文件中创建对象,imageWithCGImage:
以CGImageRef来创建对象,imageWithCIImage:
以CIImage对象来创建对象。
最后两种方法平时用的相对会少一些,简要解释一下CGImage与CIImage的区别:CGImageRef只能代表位图,如果你需要与bitmap数据打交道,无疑CGImage是非常合适的选择。CGImageRef以CG开头就不难想到CGImageRef的相关操作都需要在Core Graphics中进行,比如混合、遮罩等等。CIImage以CI开头,即Core Image,不难理解CIImage是底层的数据对象,它通常包含了与它相关的图像数据,而不是一个图像。默认情况下,CIImage对象是不会被绘图系统渲染的,除非是得到明确的指令。这种机制(“lazy evaluation”)允许核心绘图系统尽可能高效地运行。CIImage通常被运用在GPU优化图像滤镜算法当中。