在phonegap中为ios压缩图像插件

Posted

技术标签:

【中文标题】在phonegap中为ios压缩图像插件【英文标题】:Compress image plugin for ios in phonegap 【发布时间】:2015-04-10 05:39:55 【问题描述】:

我是 ios 新手,并在 ios 中为 phonegap 构建压缩图像插件。我不知道如何在我的 javascript 中调用压缩图像方法。我的代码是 Plugin.h 文件

- (void) cordovaCompressimg:(CDVInvokedUrlCommand *)command;

插件.m 文件

- (void) cordovaCompressimg:(CDVInvokedUrlCommand *)command 
 
     UIImage *sourceImage ;
     NSString *compimg =[self UIImageToBaseSixtyFour];
CDVPluginResult *pluginResult = [ CDVPluginResult
                             resultWithStatus    : CDVCommandStatus_OK
                             NSData : compimg
                             ];

 [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];



 -(NSData *)UIImageToBaseSixtyFour
  
    UIImage *sourceImage ;
    NSData *imageData = UIImageJPEGRepresentation(sourceImage, 1.0);

    NSString *base64 = [NSString stringWithFormat:@"%@",[UIImageJPEGRepresentation(sourceImage, 0.95) base64EncodedString]];

    return base64;

plugin.js 文件

window.showimg = function(cimg, callback) 
           cordova.exec(callback, function(err) 
          callback('Nothing to echo.');
          , "PhonegapPlugin", "cordovaGetCurrentDate", [cimg]);
 ;

我在 index.html 中的调用函数是,

        function showCompressimg() 
                  window.showimg("", function(echoValue) 
                  
                       alert(echoValue);

                  );
        

插件被调用但图像为空。输出为空。源图像没有通过。有人可以帮我吗, 提前致谢

【问题讨论】:

【参考方案1】:

您正确地传递了源图像,但您没有检索在 Objective-c 代码中的参数中传递的图像。每当您通过插件 Javascript 传递任何参数时,这些参数都存储在 CDVInvokedUrlCommand 实例命令中。所以你可以像这样修改你的代码 -

- (void) cordovaCompressimg:(CDVInvokedUrlCommand *)command 
 
     //Arguments are passed in an Array. Source Image is present at Index 0
     UIImage *sourceImage  = [command argumentAtIndex:0];
     NSString *compimg =[self UIImageToBaseSixtyFour:sourceImage];
CDVPluginResult *pluginResult = [ CDVPluginResult
                             resultWithStatus    : CDVCommandStatus_OK
                             NSData : compimg
                             ];

 [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];



 -(NSData *)UIImageToBaseSixtyFour:(UIImage *)img
  
    //UIImage *sourceImage ;
    NSData *imageData = UIImageJPEGRepresentation(img, 1.0);

    NSString *base64 = [NSString stringWithFormat:@"%@",[UIImageJPEGRepresentation(img, 0.95) base64EncodedString]];

    return base64;

【讨论】:

以上是关于在phonegap中为ios压缩图像插件的主要内容,如果未能解决你的问题,请参考以下文章

用于压缩的 iOS Phonegap 插件

Phonegap 条码扫描仪无法识别 windows phone 上的任何条码

如何在 Phonegap 中安装插件

ios phonegap 子浏览器插件设置

适用于 iOS 的 fileOpener2 Phonegap/cordova 插件中的正确文件路径

Cordova/PhoneGap:childBrowser UI 图像低分辨率/大块(iOS)