如何将 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?

将 Jquery 中的值从一个 html 类传递到 PhoneGap 中的另一个 html 类

从字典到 uiimage 的 url