【问题标题】:Downloading and saving an image from link in UIWebView从 UIWebView 中的链接下载和保存图像
【发布时间】:2012-10-16 07:06:38
【问题描述】:

我正在尝试将图像从在 uiwebview 中打开的网站保存到照片库。链接不仅仅是可以使用 NSURLConnection 下载的图像链接。我想通过长按来实现下载UIWebView 中的图像,就像它可以在 safari 中一样。我怎样才能做到这一点..有可能吗??

【问题讨论】:

  • 我想这就是你要找的那个.. stackoverflow.com/questions/4009760/…>

标签: iphone ios uiwebview


【解决方案1】:
NSURL *url = [NSURL URLWithString:link]; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [请求 setHTTPMethod:@"POST"]; NSURLResponse *响应 = NULL; NSError *requestError = NULL; NSData *responseData = [NSURLConnection sendSynchronousRequest:request returnedResponse:&response error:&requestError]; NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];

响应字符串包含完整信息

【讨论】:

  • 如果要从已知 url 下载项目,这很好用。如何从具有动态图像和链接的 uiwebview 实现这一点
  • @AppleDelegate: 你可以使用这个 NSString *myText = [webView stringByEvaluatingJavaScriptFromString:@\"document.documentElement.textContent\"] 获取 webview 的内容;或者你可以通过 NSString *html = [yourWebView stringByEvaluatingJavaScriptFromString: @"document.body.innerHTML"];
【解决方案2】:

不好意思问,为什么你使用 UIWebView 只加载图像。 UIImageView 类构造函数 imageWithContentsOfURL: 可以完美地完成这项工作。

然后,您可以使用 UIPopoverController 来呈现带有 UIButton 的 UIViewController,调用 UIImageWriteToSavedPhotosAlbum (http://goo.gl/uAJYS) 将 UIImage 从 UIImageView 直接保存到用户相机胶卷中。

为了优化,使用 UITableViewController 而不是 UIViewController - 更多的是默认的 iOS 外观 - 并通过覆盖 UIImageView 上的 UIResponder 方法以一小段延迟呈现 UIPopoverController。

// 编辑:如果您真的是指如何获得 Safari 的确切行为以将任何图像保存在 dom 树中,我有点难过。也许其他人可以为此提供一些信息。

【讨论】:

  • 其实它的一个网站是在 UIWebView 中打开的,它不仅仅是加载单个图像,我正在处理一个在 webview 中打开图像数量的网站
  • 如何解析 html 代码并提取所有 img url,分别在 UIImageViews 上呈现它们而不是按照描述的方式?
  • 是的,maaalex 给出了一些从 UIWebView 中提取图像 url 的好主意。
  • @maaalex:但这不会是一种不恰当的方式,因为在某些网站的情况下,html 代码可能会很大。
  • 如果您要从中保存图片是您的网站,您可以定义一个 url 方案,将图片与该方案和绝对 URL 作为参数链接,覆盖 webview 的 shouldStartLoadWithRequest: 方法并处理 img 下载并保存到那里的相机胶卷。 @iHungry:应该用正则表达式表现得很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-21
  • 1970-01-01
  • 2021-01-08
  • 2012-05-15
  • 2011-05-07
  • 1970-01-01
相关资源
最近更新 更多