2017-02-19 6 views
0

サムネイルの画像を取得していますが、画像が大きすぎるため、テーブルに配置するとすべての読み込みに時間がかかります。誰もが約50 * 50に画像のサイズを変更する方法の提案を持っているので、tableViewの読み込み速度が速くなりますか? Swift3コーディングの初心者であるので、コード例を歓迎します。ストレージからイメージを読み込んで高速に読み込むときに画像のサイズを変更する

databaseRef.child(text).child("profit").observe(.value, with: { (snapshot) in 
       if snapshot.value is NSNull{ 
       }else{ 
        let equal = snapshot.value 

        /*friendsCell.profilePicture.loadImageUsingCacheWithUrlString(urlString: databaseProfilePic as! String)*/ 
        self.imageLoader.startAnimating() 
        ! 
        let data = NSData(contentsOf: NSURL(string: wow as! String)! as URL) 

        DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) { 

         profit.sd_setImage(with: NSURL(string: profit as! String)! as URL, placeholderImage: UIImage(data: data! as Data)) 

         self.imageLoader.stopAnimating() 
        } 

       } 
      }) 
+0

おそらくもっと情報が必要です。あなたはFirebaseにフルサイズの画像を保存していますか?それらをダウンロードしてtableViewデータソースに取り込み、サイズを変更してtableViewがより速く表示されるようにしますか? – Jay

+0

あなたの質問に迷惑をかけないでください。 – Undo

答えて

-1

私はバックグラウンドスレッドで画像をダウンロードします。

DispatchQueue.global().async { 
     // load image here 
let data = NSData(contentsOf: NSURL(string: databaseProfilePic as! String)! as URL) 

    DispatchQueue.main.async { 

    // set the cell data 

    } 

    } 
-1

あなたのケースではFirebaseのイメージをサイズ変更する必要があります。クライアントアプリケーション(iOS)には同じイメージサイズがダウンロードされます。改善と最適化のために次の操作を行うことができます。

  1. 将来のフェッチのためにロードされたイメージをキャッシュします。
  2. データをロードし、画像を非同期的にフェッチさせます。これにより、他のデータが表示され、次に画像がロードされます。
  3. テーブルビューにページ分割を追加します。
  4. hq_photolq_photoなど、Firebaseのデータソースに複数のプロパティを追加することで、低品質の写真をtableViewに表示するときにフェッチし、必要に応じて高品質の写真をフェッチすることができます。
+0

Firebaseにはサーバ側の機能がないため、サーバ上でサイズ変更することはできません。また、Firebaseはすでに非同期であるため、組み込み機能です。 – Jay

0

私は、サムネイル用FirebaseStorageから画像を取得していますが、写真は、私は理論的にので、あなたが最初にあなたのFirebaseにどのようにサムネイル画像ストアに再考すべきだと思う

大きすぎる、私の意見では、サムネイルはオリジナルのものの軽量(低品質)の画像であり、あなたの言及ほど大きすぎるべきではありません。最良の選択肢は、Firebase上の画像のサイズを変更してフロントエンドで負荷を軽減することです。

イメージのサイズを変更する必要がない場合は、イメージをアーカイブする方法があります。この記事では、画像と性能のベンチマークのサイズを変更するための多くの方法を提供しているhttp://nshipster.com/image-resizing/をお読みになることをお勧めします。あなたは間違いなくそれを読んだ後に自分でコードすることができます。

ユーザーエクスペリエンスの面では、ユーザーの操作を妨げる時間をどのように減らすべきですか。以下の手順に従うことをお勧めします。

  1. サムネイルがロードされているときにプレースホルダ画像とローディングインジケータを表示します。
  2. 画像のダウンロードとサイズ変更は、バックグラウンドスレッドで動作する必要があります。
  3. リサイズ後のサムネイル画像のキャッシュ機構。イメージの効率を保存して取得する方法については、https://github.com/path/FastImageCacheをお読みください。
  4. 画像レンダリングのアニメーションでは、画像をどのように表示するかについて検討することがあります。画像ビュー上で直ちにまたは部分的にレンダリングする。

私はこれが参考になることを願っており、実際に作業する際にはさらに詳しい説明が必要です。

関連する問題