2012-04-04 67 views
4

正如問題所述,在iOS設備上,如果用戶在uitextfield中輸入URL,我想生成此URL的縮略圖捕獲。這怎麼能實現?不幸的是,我不知道從哪裏開始。在ios中生成網站屏幕截圖

當然,我可以做到這一點的一種方式是將此URL發送到後端&從那裏獲取圖像截圖。我知道如何使用python或php來做這種事。但我想避免額外往返於我的後端服務器。

我想是這樣 - (uiimage *)screenCapture:(nsurl *)url

+0

你熟悉的OpenGL ES? – 2012-04-04 18:26:24

+0

您很可能必須在服務器上執行此操作,因爲在iOS上您必須使用Apple不允許在AppStore應用程序中訪問的webkit – Otium 2012-04-04 18:26:31

+0

也許這有助於:http://stackoverflow.com/questions/5469093/how -to-創建-的UIImage從 - 一個UIWebView – hburde 2012-04-04 20:23:35

回答

2

根據您的問題,我想你會想事後操縱產生的屏幕截圖。您可以以編程方式添加一個UIWebView加載所需的URL,然後採取加載的網頁的快照,然後取出一個UIWebView 下面是步驟

  1. 一個UIImageView到您的viewController並將其連接到您的viewController類

    @property (weak, nonatomic) IBOutlet UIImageView *image_Thumbnail; 
    
  2. 具有在變量的URL名爲 「webPageUrlString」 添加下列行

    UIWebView* webView = [[UIWebView alloc] initWithFrame:self.view.frame]; 
    webView.backgroundColor = [UIColor redColor]; 
    NSURL *websiteUrl = [NSURL URLWithString:**webPageUrlString**]; 
    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:websiteUrl]; 
    [webView loadRequest: urlRequest]; 
    webView.delegate = self; 
    [self.view addSubview:webView]; 
    
  3. 現在您已請求加載URL,但無法呈現快照,除非網頁已完全加載,因此您需要等待網頁加載通知。爲此,您必須訂閱webView代理在這樣的

    @interface ViewController : UIViewController<UIWebViewDelegate> 
    
  4. 頭文件現在,您將實現「webViewDidFinishLoad」,並採取快照,那麼你想隱藏並刪除web視圖。

    -(void)webViewDidFinishLoad:(UIWebView *)webView{ 
    
    viewImage = [[UIImageView alloc] initWithFrame:self.view.frame]; 
    viewImage.backgroundColor = [UIColor greenColor]; 
    
    UIGraphicsBeginImageContext(webView.bounds.size); 
    [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; 
    viewImage.image = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    [webView setAlpha:0]; 
    [webView removeFromSuperview]; 
    
    [self.view addSubview:viewImage]; 
    

    }

  5. 現在你有截圖你想在所謂的「viewImage」的屬性,你可以做你想做的事情是什麼,直到永遠。)