如何将 UIImage 传递给 phonegap 以在 Image 控件中查看?
Posted
技术标签:
【中文标题】如何将 UIImage 传递给 phonegap 以在 Image 控件中查看?【英文标题】:How to pass UIImage to phonegap to be viewed in an Image control? 【发布时间】:2013-07-16 10:44:57 【问题描述】:我正在 ios 中做一个图像处理应用程序。我已经在一个 Objective-C 原生应用程序中完成了基本的图像转换任务。现在我需要将它嵌入到 phonegap 插件应用程序中。假设我有一种方法可以从 phonegap 端获取图像(图像 url)到我的本机插件。我现在将图像转换为灰度并将其作为 UIImage 返回。我想知道它应该如何被转换并以一种可以发送到 phonegap 端并在 Image 控件中查看的方式传递。
有人可以告诉我如何做到这一点。
【问题讨论】:
【参考方案1】:您可以将图像转换为 base64 并将图像作为字符串发送到您的插件 successCallback。
以下是你可以做的基本实现
// EDPicturePlugin.h
@interface EDPicturePlugin : CDVPlugin <EDCameraControllerDelegate>
- (void)takePicture:(CDVInvokedUrlCommand*)command;
@end
// EDPicturePlugin.m
@interface EDPicturePlugin()
@property (nonatomic, retain) NSString *callbackID;
@end
@implementation EDPicturePlugin
- (void)takePicture:(CDVInvokeUrlCommand*)command
self.callbackID = command.callbackID;
EDCameraController *cameraController = [[EDCameraController alloc] init]
cameraController.delegate = self;
[self.viewController presentViewController:cameraController];
[cameraController release];
// EDCameraControllerDelegate
- (void)cameraController:(EDCameraController*)controller
didFinishTakingImageWithInfo:(NSDictionary*)info
UIImage *image = info[@"image"];
NSString *base64 = [NSString stringWithFormat:@"data:image/jpeg;base64",[UIImageJPEGRepresentation(image, 0.95) base64EncodedString];
CDVPluginResult *result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK
messageAsString:base64];
[self.commandDelegate sendPluginResult:pluginResult callbackId:self.callbackID];
[callbackID release];
@end
【讨论】:
感谢您的快速回复。有人可以提供一些代码示例吗? 非常感谢示例代码。我还有一个与此相关的问题。如果图像转换为 base64 并作为字符串传递,我是否可以在 phonegap 端的 Image 控件中查看它。我的意思是在我的 index.html 页面中 是的: 再次非常感谢。我会试试这个。 NSString *base64 = [NSString stringWithFormat:@"data:image/jpeg;base64",[UIImageJPEGRepresentation(image, 0.95) base64EncodedString];代码行给我一个错误,说没有 NSData 接口声明选择器 base64EncodedString。有人可以帮我吗? 【参考方案2】: -(NSString *)UIImageToBaseSixtyFour:(UIImage *)sourceImage
NSData *imageData = UIImageJPEGRepresentation(sourceImage, 1.0);
NSString *base64 = [NSString stringWithFormat:@"%@",[UIImageJPEGRepresentation(sourceImage, 0.95) base64EncodedString]];
return base64;
这是我的代码。它工作正常。我只是尝试将 base64 打印到 NSLog,它给了我输出。
除此之外,我还需要从 git hub github.com/l4u/NSData-Base64 获取 NSdata+Base64.h 和 NSdata+Base64.m 文件并添加到我的项目中并导入“NSData+Base64.h “ 文件。它工作正常。
【讨论】:
以上是关于如何将 UIImage 传递给 phonegap 以在 Image 控件中查看?的主要内容,如果未能解决你的问题,请参考以下文章
如何将图像从 TableViewCell 传递到 UIImage
将 UIImage 传递给 SubView 的 UIImageView?
PhoneGap / Cordova 将 appdelegate 变量传递给 JS
如何将 UIImage 转换为 NSData 或 CFDataRef?