在ios中生成网站屏幕截图

时间:2012-04-04 17:37:15

标签: objective-c ios image screenshot

正如问题所说,在iOS设备上,如果用户在uitextfield中输入了网址,我想生成此网址的缩略图捕获。怎么能实现这一目标?不幸的是,我不知道从哪里开始。

当然,我可以这样做的一种方法是将此URL发送到后端&从那里获取图像截图。我知道如何使用python或php来做这种事情。但我想避免额外往返我的后端服务器。

我想要像(uiimage *)screenCapture:(nsurl *)url

这样的东西

1 个答案:

答案 0 :(得分:2)

根据您的问题,我认为您之后会想要操纵生成的屏幕截图。您将以编程方式添加UIWebView以加载所需的URL,然后获取加载的网页的快照,然后删除UIWebView 以下是步骤

  1. 一个UIImageView到你的viewController并将它连接到你的viewController类

    @property (weak, nonatomic) IBOutlet UIImageView *image_Thumbnail;
    
  2. 将名称为“webPageUrlString”的变量中的URL添加以下行

    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”并获取所需的快照,然后隐藏并删除webView。

    -(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”的属性中找到所需的屏幕截图,并且可以随意使用它;)