web-dev-qa-db-ja.com

なぜAndroid Picassoライブラリを使用して画像をダウンロードするのですか?

このコードを使用するだけでなく、ピカソライブラリ経由で画像をダウンロードする必要があるのはなぜですか。

private Bitmap DownloadImage(String URL) 
{
    Bitmap bitmap = null; 
    InputStream in = null; 

    try 
    {
        in = OpenHttpGETConnection(URL);
        bitmap = BitmapFactory.decodeStream(in); in.close();
    } 
    catch (Exception e) 
    {
        Log.d("DownloadImage", e.getLocalizedMessage());
    }

    return bitmap; 
}

別の質問:

PicassoはUIまたはバックグラウンドスレッドで画像をダウンロードしますか?

43
user3376321

Androidに初めて、またはおそらくAndroidに移動した人のための記録のために..........

何かが大幅に変更されるまで、ピカソを使用する必要があります。冗談ではありません。

正直なところ、それはとても簡単です。利点は信じられないほどです。

これは使いやすいです:

Picasso.
  with(State.mainContext).
  load(parseImageFile.getUrl()).
  into(null);

あなたはとても簡単です:

androidで画像処理を使用して、キャッシュとスレッド化を行う必要があります。

とても簡単です。スクラッチから書きたくない限り、Picassoを使用する必要があります。

ParseImageFileは基本的に機能しないことに注意してください-キャッシングなどについてはまったく役に立ちません。 Picassoに見事な代替手段(Universal Image Loaderなど)がありますが、2014年現在、Picassoほどうまく機能するものはありません。

super-advanced-stuffsに移動する場合...のみの方が良いピカソよりも、ボレーに移行することです。しかし、それは大きな飛躍です。

AndroidでのListViewのスクロールは、iOSでのテーブル処理のスクロールよりもはるかに問題が多いことに注意してください。Android + Picassoは、 iOS。画像を含む大きなテーブルビューをスクロールするためのすべての作業が既に完了しています。

今日では、ピカソは-単純に-Androidアプリの中心部分です。ありがとうございます。コードは1行です。セットアップは不要です。

繰り返しになりますが、ピカソよりも優れているのは、ボレーに移った場合だけです。

ところで、あなたがそれを必要とするならば、ここにボレーv。ピカソに関する素晴らしい長い記事があります...

http://www.bignerdranch.com/blog/solving-the-Android-image-loading-problem-volley-vs-picasso/

99
Fattie

Picassoは別のスレッドで画像をダウンロードし、管理します:

  • その間、画像がまだダウンロードされているプレースホルダー
  • サイズ変更
  • トリミング/センタリング/スケーリング
  • キャッシュ(毎回画像をダウンロードする必要はありません)
  • 「人気のある/通常の」画像フェードインも行います

これは非常に簡単です。例を示します。

    Picasso.with(context)
           .load(url)
           .placeholder(R.drawable.placeholder)
           .resize(imgWidth, imgHeight)
           .centerCrop()
           .into(image);
35
Sarpe

私は常に画像にPicasso Libraryを使用しました。
画像の管理に非常に役立ち、メモリの問題を心配する必要はありません。
サーバーまたはjsonから画像をダウンロードするときに使用しました

 Picasso.with(context).load("image url").fetch();

そして、その画像のURLをデータベースまたはどこかに保存します。
これで、その画像をどこでも使用できます(オフラインでも)。

Picasso.with(context).load("image url").into(ImageView);
12
Kglay Kophyo
_Picasso.with(this).load("http://webneel.com/wallpaper/sites/default/files/images/04-2013/island-beach-scenery-wallpaper.jpg").placeholder(R.mipmap.ic_launcher).fit().into(imageView,
  new Callback() {@
    Override
    public void onSuccess() {}@
    Override
    public void onError() {}
  });
_

次の理由により、ピカソライブラリ経由で画像をダウンロードする必要があります。

  1. 画像の読み込みに時間がかかる場合に備えて、プレースホルダーを配置できます。
  2. fit()-サイズによっては、imageviewで一部の画像が読み込まれない場合があります。この方法は、大きな画像を読み込むのに役立ちます。
  3. onSuccess()-画像が正常に読み込まれたときに何らかのアクションを実行できます。
  4. onError()-画像の読み込みに問題がある場合、何らかのアクションを実行できます。
5
Rajat

PicassoはListViewとGridViewで画像を管理するための素晴らしいライブラリであることを知っていますが、Picassoを含むすべてのオプションの中で、GLIDEを使用しています...

ダウンロードとキャッシュを完璧に管理します...(ダウンロード完了後にPicassoがキャッシュされた画像を使用することはできませんでしたが、Glideはケーキのようにできました)。

GLIDEのGithubページは次のとおりです。

https://github.com/bumptech/glide

よろしく....

2
Arash Parsayar

Picasso、Volley、Universal Image Loaderなどのイメージローダーライブラリを使用する必要があります。これらは、コードではできない次のことを行うためです。

  • 効率的なマルチスレッドネットワーキング(もちろんバックグラウンドスレッド上)
  • 複数の同一のリクエストを単一のネットワークコールに結合する
  • 特にListViewアイテムのリサイクル中に保留中のリクエストをキャンセルする
  • さまざまな有効期限ポリシーを使用したディスクおよびメモリのキャッシュ
  • パフォーマンスを改善し、メモリ使用量を削減するためのターゲットビューサイズへの画像のダウンサンプリング
  • UIの応答性を改善するためのUI更新のバッチ処理(少なくともVolleyとPicassoの場合)。

ちなみに、UIスレッドでネットワークリクエストを実行することは絶対にしないでください。HoneyCombは、Androidでは実行できません。

2
BladeCoder

ネットワークからイメージをロードするコアメソッドを使用する場合、大量のコードが必要になります。しかし、picassoのようなサードパーティライブラリを使用する場合、数行のコードで目標を達成できます。
。 picassoを使用してインターネットから画像を読み込むには、次の記述のみが必要です。

Picasso.with(this)
.load("YOUR IMAGE URL HERE")
.placeholder(Your Drawable Resource) //this is optional the image to display while the url image is downloading
.error(Your Drawable Resource)         //this is also optional if some error has occurred in downloading the image this image would be displayed
.into(imageView);

しかし、picassoライブラリまたはその他のライブラリを使用しない場合、より多くのコード行を必要とするAsyncTaskを使用する必要があります。

ソース: Picasso Android Tutorial

2
Amrah Anam

build.gradle(Module:app)に次の依存関係を追加してください

compile 'com.github.bumptech.glide:glide:3.6.1'
0
nikhil

Picassoは、ダウンロードした画像のキャッシュ、キャッシュの検索、既存のリクエストのキャンセル、画像の変換とデコード、画像のサイズ変更、トリミングなど、画像のダウンロードに関連するすべての落とし穴を自動的に処理します。

そして、それをカスタマイズすることができ、キャッシュ用のメモリを設定し、すべてのリクエストにグローバル情報を追加するために使用されるリクエストトランスフォーマーを追加し、デフォルトのビットマップ設定でカバーされていない形式のデコード画像を処理するビットマップ設定を追加できます。

キャッシュを使用するか、ネットワークからダウンロードするメモリポリシーとネットワークポリシーを指定できます。ダウンロード中およびダウンロードでエラーが発生した場合に使用するプレースホルダーとエラー画像をそれぞれ追加できます。

Picassoは、ワーカースレッドで非同期的に画像をダウンロードします。

以下は、Picassoの最新バージョン2.71828を使用して、ワーカースレッドでImageViewに画像をロードするコードです。

Picasso.get().load(productImageUrl).into(imageView);

以下のコードは、画像のサイズを変更してトリミングします。

詳細については、 http://www.zoftino.com/Android-picasso-image-downloading-and-caching-library-tutorial を参照してください。 Picasso.get()。load(productImageUrl).resize(400,400).centerCrop()。into(imageView);

0
Arnav Rao