【问题标题】:Most efficent way to create a CALayer with an image in it?创建包含图像的 CALayer 的最有效方法是什么?
【发布时间】:2010-11-02 19:38:13
【问题描述】:

我想知道最有效的方法是制作一个包含图像的 CALayer。

我知道你可以加载 UIImage 然后调用 [image CGImage] 但这是最​​好的方法吗?据我从 Apple 的文档中可以看出,这是您可以做到的唯一方法。

【问题讨论】:

    标签: iphone uiimage calayer cgimage


    【解决方案1】:

    试试这个:

    layer.contents = (__bridge id)[ uiimage CGImage ] ;
    

    HTH

    【讨论】:

      【解决方案2】:

      好吧,CGImage 不是 CALayer,所以您显然会留下一些步骤,但我假设您知道您在说什么,就绘制到 CALayer 或诸如此类而言.

      如果您的问题是关于在不使用 UIImage 的情况下创建 CGImages,您可以尝试查看以下函数:

      • CGImageCreateWithJPEGDataProvider
      • CGImageCreateWithPNGDataProvider

      如果您碰巧事先知道它是什么类型的图像,只需使用适当的方法即可。否则,您需要查看文件签名以查看它是否包含 PNG 或 JFIF。当然,这需要你实现一个CGDataProvider

      我认为这正是UIImage 类已经在做的事情。如果你想从中挤出一点效率,你可以在UIImage类中使用以下方法之一:

      + (UIImage *)imageWithContentsOfFile:(NSString *)path
      + (UIImage *)imageWithData:(NSData *)data
      

      这些方法的唯一区别和

      + (UIImage *)imageNamed:(NSString *)name
      

      imageNamed: 缓存图像。如果您使用第一种方法,它不会。

      【讨论】:

      • 谢谢。 CGImageCreateWithJPEGDataProvider 和 CGI​​mageCreateWithPNGDataProvider 正是我想要的。
      猜你喜欢
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 2021-06-17
      • 2015-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多