我已经发布了一个应用程序(Web2Pic),请相信我,UIGraphicsBeginImageContext(webView.frame.size); 可以什么都不做,除了在我们的UIWebView ;-(
正确的做法是有点复杂的可视区域越来越小图像,但它只是工作:
1.使用的JavaScript在我们的UIWebView得到这些浮点值:。
//Whole page size in HTML coordinate
document.body.scrollWidth
document.body.scrollHeight
//UIWebView visible size in HTML coordinate
window.innerWidth
window.innerHeight
2.Now我们可以“切割”整个页面分成几十个UIWebView的大小的小片,然后我们就可以分别捕捉每一个小块,然后把它们保存到我们的缓存我实现这通过计算ting page-offset并使用UIGraphicsBeginImageContext(webView.frame.size);获取图像数组。另外,您应该将图像数组缓存到文件系统中,否则应用程序最终会崩溃!我们可以开始一个全分辨率的上下文:UIGraphicsBeginImageContext(CGSizeMake(document.body.scrollWidth,document.body.scrollHeight));
4.Render每一个细小的图像转换为基于坐标的大背景下。而小心角落,在每一行的最后一个图像/行可能不是一个完整的图像。
俗语仍是一步到位左:保存大的图像。 不要将其保存到天地我的相簿,因为iOS的会自动降低图像的相册中的分辨率。相反,我们可以将其保存到文件系统,使应用程序的iTunes的文件共享支持,甚至写一个简单的应用程序内的照片管理器。
希望这些可以帮助;-)
已超峰季
呀web视图充当如果它有CATiledLayer,并且一次只呈现大块,如果它是一个真正的CATiledLayer它不会是那么糟糕,因为我可以设置瓷砖的大小,但不幸的是,情况并非如此。 我正在试图滚动图层,但它不喜欢那个。 – 2009-01-23 09:25:03