c/c++语言开发共享iPhone – 获取CGDataProvider背后数据的指针?

我正在尝试获取CGImage并将其数据复制到缓冲区中以供以后处理。 下面的代码是我到目前为止的,但有一件事我不喜欢它 – 它复制图像数据两次。 一次用于CGDataProviderCopyData() ,一次用于:getBytes:length调用imgData。 我还没有找到一种方法将图像数据直接复制到我的缓冲区并删除CGDataProviderCopyData()步骤,但必须有一种方法……任何指针? (… pun ftw)

  NSData * imgData =(NSData *)(CGDataProviderCopyData(CGImageGetDataProvider(myCGImageRef)));   CGImageRelease(myCGImageRef);   //我有一个以前定义的指向名为“mybuff”的可用缓冲区的指针  [imgData getBytes:mybuff length:[imgData length]]; 

    除非您在使用Instruments测量时遇到性能问题,否则我认为复制它两次并不是一个大问题。 您可以直接存储CFDataRef imgData而不是mybuff。

    编辑
    我在谈论这种代码:
    在类接口中添加一个数组:

     NSMutableArray *images; 

    在你的init:方法:创建数组:

     images = [[NSMutableArray alloc] init]; 

    并且有一个dealloc;

     -(void)dealloc{ [images release]; } 

    并在保存每个图像的代码中:

     CGDataRef imageDataRef = CGDataProviderCopyData(CGImageGetDataProvider(myCGImageRef))); [images addObject: (NSData*)imageDataRef]; CGRelease(imageDataRef); 

    看到这个答案: CGDataProviderCopyData()实际上是否复制了字节? 或只是指针?

    看起来直接访问CGDataProvider后面的缓冲区仅限于私有API。

      以上就是c/c++开发分享iPhone – 获取CGDataProvider背后数据的指针?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/562377.html

      (0)
      上一篇 2021年2月4日
      下一篇 2021年2月4日

      精彩推荐