2016-05-01 5 views
2

ウェブサイトから画像を表示したい。スイフト。ウェブサイトから画像を表示する(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!) 
     } 
    } 
} 

これは私の場合の画像のファイル拡張子ではなく、を持っているイメージのために動作します。問題は、イメージが、私が試した「xxx.?action=stream」

であるということです。

ウェブサイトの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> 
+0

イメージリンクを見つけるためにHTMLを解析する必要があります。これを行うには、Fuziのようなライブラリを使用します。 – Moritz

+0

@EricD Fuziに関する経験はありますか? もしそうなら、私に例を挙げてもらえますか? – 123FLO321

+0

私はFuziとあなたのHTMLスニペットを使って例を作りました。 – Moritz

答えて

1

まず、Fuziインストール - 私はちょうど例えば、このいずれかを使用していたり​​、他の可能第三者を、 - 、それをインポートします。

import Fuzi 

ダウンロード例えば、NSURLSessionなどのデータとしてのWebページ自体。

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の値を取得する必要があります。

タグ(S)検索:

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

完全な例:あなたの例のHTMLで

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

、この版画:

let path = doc.css("img") 

はそのsrc属性を取得します

http://1.1.1.181:8085/?action=stream

今、あなたは画像リンクを持っていることを、あなたは画像そのものをダウンロードすることができます。

関連する問題