我想知道最有效的方法是制作一个带有图像的 CALayer。
我知道你可以加载 UIImage 然后调用 [image CGImage] 但这是最好的方法吗?据我从Apple的文档中可以看出,这是您可以做到的唯一方法。
试试这个:
layer.contents = (__bridge id)[ uiimage CGImage ] ;
高温高压
好吧, aCGImage
不是 a CALayer
,所以你显然会留下一些步骤,但我假设你知道你在说什么,就绘制到 aCALayer
或诸如此类而言。
如果您的问题是关于CGImage
在不使用 UIImage 的情况下创建 s,您可以尝试查看以下函数:
如果您碰巧事先知道它是什么类型的图像,只需使用适当的方法即可。否则,您需要查看文件签名以查看它是否包含 PNG 或 JFIF。当然,这需要你实现一个CGDataProvider
.
我认为这正是UIImage
班级已经在做的事情。如果你想从中挤出一点效率,你可以在UIImage
类中使用以下方法之一:
+ (UIImage *)imageWithContentsOfFile:(NSString *)path
+ (UIImage *)imageWithData:(NSData *)data
这些方法之间的唯一区别和
+ (UIImage *)imageNamed:(NSString *)name
是imageNamed:
缓存图像。如果您使用第一种方法,则不会。