2011-05-26 67 views
5

是否可以將HTML頁面轉換爲可可中的圖像?將HTML文檔轉換爲可可中的圖像

其實我已經在HTML中創建了完整的視圖,現在我想要將整個html預覽轉換爲圖像(任何jpeg或png等)。

我在網上找不到任何資源或樣本,這對我的上述查詢提供了某種幫助。非常感謝,如果有人能分享他的智慧,我可以如何實現這一點。

在此先感謝..

+0

你喜歡在iOS中做這個嗎? – 2011-05-26 09:25:40

回答

7

首先,我要感謝塞爾吉奧......他的回答讓我開始了,但我想我會分享一些我沒有發現明顯的代碼,以使其工作:

下面是如何使一個頁面的縮略圖時無需它顯示:最後

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    UIGraphicsBeginImageContext(webView.bounds.size); 
    [webView.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    UIImage *webViewImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    NSData *thumbnailData = UIImagePNGRepresentation(webViewImage); 
    [webView removeFromSuperview]; 
} 

,顯示該縮略圖you'l:

// Your width and height can be whatever you like, but if you want this to render 
// off screen, you need an x and y bigger than the superview's width and height 
UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectMake(largerScreenDimension, largerScreenDimension, largerScreenDimension, largerScreenDimension)]; 
[self.view addSubview:webView]; // UIWebViews without an assigned superview don't load ever. 
webView.delegate = self; // or whoever you have implement UIWebViewDelegate 
webView.scalesToFit = YES; // This zooms the page appropriately to fill the entire thumbnail. 
[webView loadRequest:[NSURLRequest requestWithURL:url]]; 

然後在你的委託實現這個我需要這樣的東西:

thumbnailImageView.image = [UIImage imageWithData:thumbnailData]; 

作爲一件額外的事情,我會提到,我想要一次生成多個縮略圖。我發現使用objc_setAssociatedObject()objc_getAssociatedObject()對跟蹤哪個webView加載哪個縮略圖非常有幫助。不過,詳細討論這個問題的效果如何超出了這個問題的範圍。

+0

很好的答案。只有一件小事我無法工作。我不希望圖像以任何比例。所以我試圖關閉scaleToFit並將自己的寬度和高度放在initWithFrame中。但是,現在我得到一個空的圖像。有任何想法嗎?謝謝 – hishamaus 2015-02-12 06:21:36

+0

@hishamaus:如果你還有其他問題,你應該單獨發佈,我想。我最近沒有使用Obj-C,所以我不知道如何回答你的問題。 – ArtOfWarfare 2015-02-13 20:53:38

3

可以繪製在圖像方面您認爲是這樣的:

UIWebView* view = ... 
.... 
UIGraphicsBeginImageContext(view.bounds.size);  
[view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 
NSData *imagedata = UIImagePNGRepresentation(viewimage); 
NSString *encodedString = [imageData base64Encoding]; 

另一種選擇是使用Quartz PDF引擎創建一個PDF。

+0

其實我試圖在QuickLook插件中使用圖片作爲縮略圖,所以使用webview是不可能的。在此先感謝.. – 2011-05-26 09:40:57

+0

@Vinaj Jain:我在那裏放了一個'UIWebView',因爲你說過「我已經在HTML中創建了完整的視圖,現在我想轉換整個HTML預覽」。所以這就是你所擁有的,我想。我的代碼會創建一個'UIImage',你可以將它放在你的插件中,它可以用你在屏幕上繪製的任何視圖。 – sergio 2011-05-26 09:44:06

+0

okkk ...我會盡力...非常感謝您的幫助... – 2011-05-26 09:53:51