如何将UIWebView内容保存到照片库中

时间:2011-07-20 18:29:22

标签: objective-c ipad

如何将UIWebView内容保存到照片库

-(IBAction)save:(id)sender{

    UIImage* image = nil;

    UIGraphicsBeginImageContext(webView.frame.size);
    {
        image = UIGraphicsGetImageFromCurrentImageContext();
    }
    UIGraphicsEndImageContext();

    if (image != nil) {
        UIImageWriteToSavedPhotosAlbum(image,self, nil, nil);
    }

}

此代码正在保存空白页面。

1 个答案:

答案 0 :(得分:1)

我发布了一个应用程序(Web2Pic),请相信我 UIGraphicsBeginImageContext(webView.frame.size); 除了从我们的UIWebView中的可见区域获取一个小图像之外什么都不做; - (

正确的方法有点复杂,但它只是有效:

1.在我们的UIWebView中使用 JavaScript 来获取这些浮点值:

   //Whole page size in HTML coordinate
   document.body.scrollWidth
   document.body.scrollHeight
   //UIWebView visible size in HTML coordinate
   window.innerWidth
   window.innerHeight

2.现在我们可以将整个页面“剪切”成几十个UIWebView大小的小块。然后我们可以单独捕获每个小块并将它们保存到我们的缓存中。我通过计算页面偏移量来实现这一点,并使用 UIGraphicsBeginImageContext(webView.frame.size); 来获取图像数组。此外,您应该将图像阵列缓存到文件系统中,否则应用程序最终会崩溃!

3.当我们最终获得所有小部分时,我们可以启动全分辨率上下文: UIGraphicsBeginImageContext(CGSizeMake(document.body.scrollWidth,document.body.scrollHeight));

4.将每个小图像放入基于坐标的大背景中。并且小心角落,每行/每行中的最后一张图片可能不是完整图片。

5.还有一步:保存大图像。 不要将其保存到PhotoAlbum ,因为iOS会自动降低相册中图像的分辨率。相反,我们可以将其保存到文件系统中并启用应用程序的 iTunes文件共享支持,甚至可以编写一个简单的应用程序内照片管理器。

希望这些可以提供帮助; - )

Yichao Peak Ji