如何将图像数据传递给React Native中的本机模块?

时间:2017-04-26 20:31:24

标签: react-native uiimage nsdata native-methods native-module

在我在Xcode中实现RCTBridgeModule协议的类中,我正在尝试编写一个RCT_EXPORT_MEATHOD,我可以将其暴露给React Native代码以使用图像数据。目前,我可以在React Native中将图像写入磁盘,然后将路径传递给本机方法,但是我想知道是否有更好的技术可以直接传递图像数据以获得更好的性能?

所以不是这样:

RCT_EXPORT_METHOD(scanImage:(NSString *)path) {
  UIImage *sampleImage = [[UIImage alloc] initWithContentsOfFile:path];  
  [self processImage: UIImage];
}

更像这样:

RCT_EXPORT_METHOD(scanImage:(NSData *)imageData) {
  [self processImageWithData: imageData];
}

2 个答案:

答案 0 :(得分:0)

您可以使用[RCTConvert UIImage:icon]

中的#import <React/RCTConvert.h>方法

您需要将“架构”指定为“数据”。 有关更多详细信息,请查看以下源代码: https://github.com/facebook/react-native/blob/master/React/Base/RCTConvert.m#L762

答案 1 :(得分:0)

对我来说,这可行:

  NSURL *url = [NSURL URLWithString:[imagePath stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];
  UIImage *image = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:url]];

imagePathNSString来自于本机反应桥(使用react-native-image-picker的响应-response.uri)。