2011-05-26 15 views
5

ココアでHTMLページを画像に変換することは可能ですか?ココアでHTML文書を画像に変換するには

実際、私はHTMLで完全なビューを作成しました。今では、HTMLプレビュー全体を画像(jpegやpngなど)に変換したいと思っています。

ウェブ上でリソースやサンプルを見つけることができませんでした。上記の質問に対して何らかの助けとなりました。誰かが自分の知恵をどのように分かち合うことができたら大変感謝しています。

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

別のオプションPDFを作成するために、クォーツのPDFエンジンを使用することになります。

事前に感謝を...

+0

iOSでこれを行うのが好きですか? –

答えて

7

最初に、私はSergioに感謝したいと思います...彼の答えは私を始めましたが、私は私がそれを動作させるために書かなければならないことが分かりませんでしたコードのいくつかを共有すると思った:ここで

は今までそれが表示されなくても、ページのサムネイルを作成する方法は次のとおりです。次に

// 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]]; 

デリゲートでこれを実装する:

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

、このサムネイルyou'lを表示しますLのようなものが必要です。私は言及しますボーナスの事のよう

thumbnailImageView.image = [UIImage imageWithData:thumbnailData]; 

を、私は一度に生成される複数のサムネイルを望んでいました。 objc_setAssociatedObject()objc_getAssociatedObject()を使用すると、どのwebViewがどのサムネイルをロードしているかを把握するのに非常に役立ちます。しかし、それがどのように働いたかについて詳しく説明することは、この質問の範囲を超えています。

+0

偉大な答え。私が働くことができない小さなものが1つだけあります。私はイメージがどんな比率であっても欲しくない。私はscaleToFitをオフにして、自分の幅と高さをinitWithFrameに入れようとしました。しかし、今私は空のイメージを取得します。何か案は?ありがとう – hishamaus

+0

@hishamaus:別の質問がある場合は、別々に投稿する必要があります。最近Obj-Cで作業していませんでしたので、あなたの質問にどのように答えるか分かりません。 – ArtOfWarfare

3

あなたはこのように、画像のコンテキストでビューを描くことができます。

+0

実際には、画像をQuickLookプラグインでサムネイルとして使用しようとしているため、webviewを使用できません。 –

+0

@Vinaj Jain:「私はHTMLで完全なビューを作成し、今ではHTMLプレビュー全体を変換したい」と言ったので、UIWebViewを配置しました。これはあなたが持っているものです。私のコードはあなたのプラグインに置くことができる 'UIImage'を作成し、それはあなたがスクリーン上に描くことができるどんなビューでも動作します。 – sergio

+0

okkk ...私は試してみます...あなたの助けをたくさんありがとう... –

関連する問題