我已经发布了一个应用程序(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 文件共享支持,甚至可以编写一个简单的应用程序内照片管理器。
希望这些可以帮助;-)
易潮峰姬