3

我正在IOS中做一个图像处理应用程序。我已经在一个 Objective-C 原生应用程序中完成了基本的图像转换任务。现在我需要将它嵌入到 phonegap 插件应用程序中。假设我有一种方法可以从 phonegap 端获取图像(图像 url)到我的本机插件。我现在将图像转换为灰度并将其作为 UIImage 返回。我想知道它应该如何转换并以一种可以发送到 phonegap 端并在 Image 控件中查看的方式传递。

有人可以告诉我如何做到这一点。

4

2 回答 2

4

您可以将图像转换为 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
于 2013-07-16T10:51:19.603 回答
0
        -(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”文件。它工作正常。

于 2013-07-24T06:26:07.183 回答