如何在 iPad 上使用 JavaScript/Obj-C 将图像保存到照片库?

Posted

技术标签:

【中文标题】如何在 iPad 上使用 JavaScript/Obj-C 将图像保存到照片库?【英文标题】:How to save image to Photo gallery using JavaScript/Obj-C on iPad? 【发布时间】:2011-06-29 14:20:54 【问题描述】:

我目前正在 iPad 上开发一个基于 javascript 的小型绘图应用程序。我只是像this 一样将它包装在 UIWebView 中。现在的问题是,我不知道如何从应用程序中保存图像,以便将其存储在 iPad 照片上。

有没有一些简单的方法可以将 JavaScript 代码与 Objective-C 连接起来?我想我可以从 JS 端传递一个包含 PNG 图像数据的字符串,然后使用 Objective-C 以某种方式将其保存到照片库中。

【问题讨论】:

【参考方案1】:

是的,有一种方法可以将 JavaScript 从 UIWebView 桥接到 Obj-C 代码。

设置您的 UIWebView 委托,并在您的委托中粘贴以下方法

//
// Map links starting with file://
//            ending with #action
// with the action of the controller if it exists.
//
// Open other links in Safari.
- (BOOL)webView: (UIWebView*)webView shouldStartLoadWithRequest: (NSURLRequest*)request navigationType: (UIWebViewNavigationType)navigationType 
    NSString *fragment, *scheme;

    if (navigationType == UIWebViewNavigationTypeLinkClicked) 
        [webView stopLoading];
        fragment = [[request URL] fragment];
        scheme = [[request URL] scheme];

        if ([scheme isEqualToString: @"file"] && [self respondsToSelector: NSSelectorFromString(fragment)]) 
            [self performSelector: NSSelectorFromString(fragment)];
            return NO;
        

        [[UIApplication sharedApplication] openURL: [request URL]];
    

    return YES;

然后您可以编写处理请求的 Obj-C 方法。例如。在您的网络视图中,您可能有一个按钮,该按钮具有类似的链接标签

<a href="file://myGreatApp.com/saveImage">Click Me to Save Image </a>

方案是“文件”,片段是“saveImage”。你现在可以编写一个 Obj-C 方法

-(void)saveImage;

每次用户点击链接时都会调用它。

编辑: 如果您想在您的方法中传递字符串参数,只需使用 javascript 将它们附加到您的片段 url。所以你可能有

<a href="file://myGreatApp.com/saveImage*asdgo8asdgl35lkjasgd807ll12">Click Me to Save Image </a>

然后在您的 Obj-C 代码中,在字符“*”上拆分片段。使用前半部分作为选择器,后半部分作为参数。

【讨论】:

知道如何将数据(实际上只是一个字符串)从 JS 应用程序传递到 Obj-C 吗?我可能错过了这里的重点。不过谢谢你的回答。 :) 使用字符分隔符并将其附加到您的片段中。所以使用 javascript 来动态地制作你的链接 href file://myGreatApp.com/saveImageimgdataimgdataimgdataimgdata。然后在 obj c 代码中,您将通过 '' 分割片段。前半部分成为您的选择器“saveImage”,而后半部分成为您在选择器中传递的字符串对象。 我最终使用了这个解决方案,blog.techno-barje.fr/post/2010/10/06/…。

以上是关于如何在 iPad 上使用 JavaScript/Obj-C 将图像保存到照片库?的主要内容,如果未能解决你的问题,请参考以下文章

上传图像文件时如何禁用捕获(在 ipad 上使用 safari)

如何在 iPad 上关闭 UIImagePickerController?

如何在 iPad/iPhone 上使用 ICC 配置文件?

如何在 iPad 上使用 HTML5/Javascript 合成音频

如何在 Mac 上共享我的 iPad

如何在 iPad 上使用 JavaScript/Obj-C 将图像保存到照片库?