Swift .从网站的显示图像 (xxx。?行动 = 流)

标签: ios HTML Swift
发布时间: 2017/3/5 22:47:48
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想要显示来自网站的图像。问题是图像是在"xxx。?行动 = 流"

我试过了:

extension UIImageView {
public func imageFromUrl(urlString: String) {
    if let url = NSURL(string: urlString)
    {
        let request = NSURLRequest(URL: url)
        NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {
            (response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in
            self.image = UIImage(data: data!)
        }
    }
}

这适用于具有文件扩展名的图像不是为我的案子中的图像。

网站的 html 代码︰

<html>
    <body style="margin: 0px">
         <img style="-webkit-user-select: none; display: block; margin: auto; cursor: zoom-in;" src="http://1.1.1.181:8085/?action=stream" width="627" height="353">
    </body>
</html>

解决方法 1:

首先,安装附子-或任何其他有能力的第三方,我只使用的这一个例如-并将其导入︰

import Fuzi

下载的网页本身作为数据,例如,NSURLSession。

NSURLSession.sharedSession().dataTaskWithURL(webpageURL, completionHandler: { (data, response, error) in
    if let error = error {
        print(error.debugDescription)
    } else {
        if let data = data {
            // next code takes place here
        }
    }
}).resume()

解码为字符串数据,然后创建一个实例的 HTMLDocument :

do {
    if let html = String(data: data, encoding: NSUTF8StringEncoding) {
        let doc = try HTMLDocument(string: html)
        // next code takes place here
    }
} catch let error as NSError {
    print(error.debugDescription)
}

然后,问题在于要检查您的 HTML 和理解到你想要的目标路径。

从您的示例中,您需要找到 img 标记,然后获取其 src 值。

查找标记︰

let path = doc.css("img")

得到其 src 属性︰

if let firstObject = path[0] {
    let link = firstObject["src"]
    print(link)
}

完整的示例︰

NSURLSession.sharedSession().dataTaskWithURL(webpageURL, completionHandler: { (data, response, error) in
    if let error = error {
        print(error.debugDescription)
    } else {
        if let data = data {
            do {
                if let html = String(data: data, encoding: NSUTF8StringEncoding) {
                    let doc = try HTMLDocument(string: html)
                    let path = doc.css("img")
                    if let firstObject = path[0],
                        link = firstObject["src"] {
                        print(link)
                    }
                }
            } catch let error as NSError {
                print(error.debugDescription)
            }
        }
    }
}).resume()

与您的示例 HTML,这将打印︰

http://1.1.1.181:8085 /? 行动 = 流

现在,你已经得到的图像链接,您可以下载图像本身。

官方微信
官方QQ群
31647020