使用 C++ 文件 iOS 项目时如何将 std::vector<uchar> 转换为 NSData

How to convert std::vector<uchar> to NSData when using C++ file iOS project

在 iOS 项目中使用 C++ 文件执行算法时,我遇到了一个问题,函数 returns std::vector jpeg 图像数据。

我一直在寻找如何从 std::vector< uchar > 转换为 NSData 并转换的特定问题它到 UIImage.

但不幸的是 none 经过大量的反复试验,我发现了一个解决方案,我将其与这个问题一起发布。

理解std::vector是字节数组

要将其转换为 NSData,我们需要使用以下方法

  1. 这里getFrontFaceJPEG()是一个C++函数,returnsJpeg数据以std::vector< uchar > std::vector<uchar> vectorImg = img.getFrontFaceJPEG();

  2. 一旦它 returns std::vector< uchar > 我们需要将它转换为 NSData 使用以下方法: NSData * imgData = [[NSData alloc] initWithBytesNoCopy:vectorImg.data() length:vectorImg.size() freeWhenDone:false];

  3. 终于可以转UIImage了UIImage *resultimage = [UIImage imageWithData:imgData];