首页 > 解决方案 > 如何转换 std::vector使用 C++ 文件 iOS 项目时到 NSData

问题描述

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

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

但不幸的是,经过大量试验和错误,我发现没有一个解决方案,我与这个问题一起发布。

标签: iosobjective-cxcodensdatastdvector

解决方案


要理解std::vector< uchar >是一个字节数组。

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

  1. 这里getFrontFaceJPEG()是一个 C++ 函数,它以std::vector< uchar >的形式返回 Jpeg 数据 std::vector<uchar> vectorImg = img.getFrontFaceJPEG();

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

  3. 最后你可以转换为 UIImage UIImage *resultimage = [UIImage imageWithData:imgData];


推荐阅读