迅速。从网站显示图像(xxx.?action=stream)

时间:2016-05-01 11:19:27

标签: html ios swift image

我想显示网站上的图片。问题是图像位于" xxx。?action = stream"

我试过了:

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 个答案:

答案 0 :(得分:1)

首先,安装Fuzi - 或任何其他有能力的第三方,我只是使用这个作为示例 - 并导入它:

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()

将数据解码为String然后创建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/?action=stream

现在您已获得图片链接,您可以自行下载图片。