magazine off

Swift3でサーバーにある画像(URL)をUIImageとして描画する方法

投稿日 : 2017年5月11日(木曜日)

参考

Swift 3: Display Image from URL

環境

-Swift3
-Xcode8

実装

まずはletで宣言した後に、URLのコンテンツをダウンロードする。これはURLSessionオブジェクトで行うことができる。補完ハンドラが呼び出されると、WebからUIImageがダウンロードされます。

 let catPictureURL = URL(string: "https://データのurl/画像データ.jpg")!

  /*

  デフォルト設定でセッションオブジェクトを作成する。

 */

 let session = URLSession(configuration: .default)
  /*

   ダウンロードタスクを定義します。ダウンロードタスクは、
   URLの内容をデータオブジェクトとしてダウンロードし、
   そのデータで望むことを実行できます。

  */
 let downloadPicTask = session.dataTask(with: catPictureURL) { (data, response, error) in
  /*
    ダウンロードが完了しました。
  */

     if let e = error {
         print("cat pictureのダウンロード中にエラーが発生しました: \(e)")
     } else {
   /*
  エラーは見つかりませんでした。
  レスポンスがないと変わってしまいますので、それもチェックしてください。
   */
         if let res = response as? HTTPURLResponse {
             print("レスポンスコード付きの猫の画像をダウンロード \(res.statusCode)")
             if let imageData = data {
  /*
   最後に、そのデータをイメージに変換し、
   それを使って望むことをします。
   */

                 let imageimage = UIImage(data: imageData)
                 print(imageimage!)
                 self.templateThumbnailImageView.image = imageimage               

    /*
   あなたのイメージで何かをしてください。
    */

             } else {
                 print("画像を取得できませんでした:画像はありません")
             }
         } else {
             print("何らかの理由で応答コードを取得できませんでした")
         }
     }
 }

 downloadPicTask.resume()

 

最後に、downloadPicTask.resume()で呼び出します。そうしないと、タスクは開始されません。このコードはすべて最初はちょっと気になるかもしれませんが、URLSession APIはブロックベースであり、非同期で動作することができます。UIスレッドを数秒間ブロックすると、OSがアプリケーションを終了します。

Categories

Recent Posts

hubot + slack で配列の中身をランダムで投稿

 毎分1分毎に配列の中身 ary = ['犬','猫','鳥','タコ','イカ'…

投稿日 : 2017年8月7日(月曜日)

What the world would be like if medicine shops didn’t exist

 What everyone is saying about vaccinatio…

投稿日 : 2015年12月21日(月曜日)

Redux Sagaのコンセプトを短いコードで解説! React

   [st-kaiwa1] 本日は、Redux Sagaの…

投稿日 : 2021年5月13日(木曜日)

乗法の公式と平方完成を覚えた

    誰のためにもなってないブログを書いてますが、まあ日記…

投稿日 : 2017年6月13日(火曜日)