为什么使用Android Picasso库下载图像?

use*_*321 43 android image picasso

为什么我应该通过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; 
}
Run Code Online (Sandbox Code Playgroud)

另一个问题:

毕加索是在UI中还是通过后台线程下载图像?

Fat*_*tie 100

仅适用于Android新手或者从iOS迁移到Android的任何人的记录..........

在某些事情发生巨大变化之前,你绝对必须使用毕加索.不是开玩笑.

老实说,就这么简单.优点令人难以置信.

这很容易使用:

Picasso.
  with(State.mainContext).
  load(parseImageFile.getUrl()).
  into(null);
Run Code Online (Sandbox Code Playgroud)

你很简单:

必须使用Android上的图像处理进行缓存和线程处理.

就这么简单.除非你想从头开始编写,否则你必须使用Picasso.

请注意,ParseImageFile本质上不起作用 - 它对缓存等完全没用.Picasso有很多令人钦佩的替代品(例如Universal Image Loader,请查看),但是现在2014年没有像Picasso那样有效.

请注意,如果你转向超级先进的东西...... 唯一比毕加索更好的是转向Volley.但这是一个巨大的飞跃.

请注意,在Android上滚动ListView比在iOS上滚动表格更有问题.你可以说,Android + Picasso更像iOS上的情况,在这里已经完成了用图像滚动大型表视图的所有工作.

就今天而言,毕加索只是 - 任何Android应用程序的核心部分.谢天谢地,这是一行代码 - 没有设置,没有.

再说一次,毕加索唯一的"比"更好的是如果你转向Volley.

BTW这里有一篇关于Volley v.Picasso的精彩长篇文章,如果你需要的话......

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

  • 为清楚起见,Volley不是图像缓存库,您可以使用Glide https://github.com/bumptech/glide使用Volley提供图像缓存. (8认同)

Sar*_*rpe 35

毕加索在另一个线程中下载图像并为您管理:

  • 在此期间占位符图像仍在下载
  • 调整
  • 裁剪/定心/缩放
  • 缓存(您不必每次都下载图像)
  • 它甚至可以实现"图像淡入",现在很流行/正常

这非常简单,这是一个例子:

    Picasso.with(context)
           .load(url)
           .placeholder(R.drawable.placeholder)
           .resize(imgWidth, imgHeight)
           .centerCrop()
           .into(image);
Run Code Online (Sandbox Code Playgroud)

  • +1.它还将为您处理`ListView`回收.我强烈建议你不要重新发明轮子.使用应用中的任何现有图像下载库. (8认同)

小智 12

我总是使用毕加索图书馆来拍照.
它对于管理图像非常有用,而且不用担心内存问题.
当我从服务器或json下载图像时,我使用了

 Picasso.with(context).load("image url").fetch();
Run Code Online (Sandbox Code Playgroud)

我将该图像URL存储到数据库或某个地方.
现在我们可以在任何地方使用该图像(也可以离线).

Picasso.with(context).load("image url").into(ImageView);
Run Code Online (Sandbox Code Playgroud)


Raj*_*jat 5

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() {}
  });
Run Code Online (Sandbox Code Playgroud)

您应该通过Picasso库下载图像,原因如下:

  1. 您可以放置​​占位符,以防图像需要一些时间来加载.
  2. fit() - 由于尺寸的原因,有时某些图像不会在imageview中加载.此方法将帮助您加载大图像.
  3. onSuccess() - 成功加载图像后,您可以执行某些操作.
  4. onError() - 加载图像时出现问题,您可以执行某些操作.