我已經發布了一個應用程序(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