我有一组本地
HTML页面,我想批量生成缩略图(我只想显示缩略图,而不是完整的网页).这就是我实现这个目标的方式:
NSString* path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:link]; NSURL* url = [NSURL fileURLWithPath:path]; NSURLRequest* request = [NSURLRequest requestWithURL:url]; UIWebView* webView = [[UIWebView alloc] initWithFrame:CGRectMake(0,725,1004)]; webView.delegate = cell; [webView loadRequest:request]; [self.view addSubview:webView]; // doesn't work without this line,but then the UIWebView is onscreen
然后在代表中:
- (void)webViewDidFinishLoad:(UIWebView *)webView { [self performSelector: @selector(render:) withObject: webView afterDelay: 0.01f]; } - (void) render: (id) obj { UIWebView* webView = (UIWebView*) obj; CGSize thumbsize = CGSizeMake(96,72); UIGraphicsBeginImageContext(thumbsize); CGContextRef context = UIGraphicsGetCurrentContext(); CGFloat scalingFactor = thumbsize.width/webView.frame.size.width; CGContextScaleCTM(context,scalingFactor,scalingFactor); [webView.layer renderInContext: context]; UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); self.thumbnail.image = resultImage; }
这是我的问题:
1)我的一般方法是否正确?这是批量处理网页缩略图的最有效方法吗?
2)我希望能够从屏幕外的UIWebView渲染缩略图,但是除非我将UIWebView添加到视图层次结构中,否则不会调用webViewDidFinishLoad :.有没有办法可以避免这种情况?
3)如果我尝试在webViewDidFinishLoad:中捕获UIWebView的图像,我会得到一个空白图像.我必须为捕获工作做出人为的延迟.有什么方法吗?
谢谢!