gpt4 book ai didi

ios - 在 iOS 上生成本地网页的缩略图

转载 作者:可可西里 更新时间:2023-11-01 06:11:29 26 4
gpt4 key购买 nike

我有一组本地 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, 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

然后在委托(delegate)中:

- (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 呈现缩略图,但是 webViewDidFinishLoad: 不会被调用,除非我将 UIWebView 添加到 View 层次结构中。有什么办法可以避免这种情况吗?

3) 如果我尝试在 webViewDidFinishLoad: 中捕获 UIWebView 的图像,我得到一张空白图像。我必须人为地延迟捕获工作。有什么办法解决这个问题吗?

谢谢!

最佳答案

1) 这似乎是我所知道的唯一方法,无需依赖第三方基于服务器的 API(如果存在的话)

2) 您可以通过将其框架设置到屏幕外的位置来将 UIWebView 绘制到屏幕外。例如 320,568,725,1008。我还没有测试过,但您甚至应该能够将 View 设置为 1 x 1 像素的框架。

3) 我想这是因为当调用 webViewDidFinishLoad: 时,已在 Web View 上调用了 SetNeedsDisplay(),但 Web View 尚未重绘自身。我不确定解决这个问题的方法。

关于ios - 在 iOS 上生成本地网页的缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12228814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com