正如问题所说,在 iOS 设备上,如果用户在 uitextfield 中输入 URL,我想生成该 URL 的缩略图捕获。如何做到这一点?不幸的是,我不知道从哪里开始。
当然,我可以做到这一点的一种方法是将此 URL 发送到后端并从那里获取图像屏幕截图。我知道如何使用 python 或 php 来做这种事情。但我想避免到我的后端服务器的额外往返。
我想要类似的东西 -(uiimage *)screenCapture:(nsurl *)url
正如问题所说,在 iOS 设备上,如果用户在 uitextfield 中输入 URL,我想生成该 URL 的缩略图捕获。如何做到这一点?不幸的是,我不知道从哪里开始。
当然,我可以做到这一点的一种方法是将此 URL 发送到后端并从那里获取图像屏幕截图。我知道如何使用 python 或 php 来做这种事情。但我想避免到我的后端服务器的额外往返。
我想要类似的东西 -(uiimage *)screenCapture:(nsurl *)url
根据您的问题,我认为您以后会想要操作生成的屏幕截图。您将以编程方式添加 UIWebView 以加载所需的 URL,然后对加载的网页进行快照,然后删除 UIWebView 以下是步骤
一个 UIImageView 到你的 viewController 并将它连接到你的 viewController 类
@property (weak, nonatomic) IBOutlet UIImageView *image_Thumbnail;
将 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];
现在您已请求加载 URL,但除非网页已完全加载,否则无法呈现快照,因此您需要等待网页加载通知。为此,您必须订阅 webView 委托像这样的头文件
@interface ViewController : UIViewController<UIWebViewDelegate>
现在您将实现“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];
}
现在你在名为“viewImage”的属性中拥有了你想要的截图,你可以用它做任何你想做的事情;)