【问题标题】:Load bitmap with Picasso用毕加索加载位图
【发布时间】:2014-04-30 09:44:44
【问题描述】:

我正在使用 Picasso 库在 viewpager 中加载图像,但我需要加载位图,并且 Picasso 只接受 File 变量。如何使用 Picasso 加载位图文件?

Bitmap imagescompress = decodeSampledBitmapFromResource(getResources(), AnohanaAdapter.imagep[position], 100, 100);

如果我将 imagecompress 放在 Picasso 的加载函数中,我会出现以下错误: 无法解析方法“加载(android.graphics.Bitmap)”。

实际上,我使用以下代码加载图像:

Picasso.with(VistaSingola.this).load(AnohanaAdapter.imagep[i]).placeholder(R.drawable.ic_launcher).error(R.drawable.error).fit().into(imageViewTouch);

但是图像很大,我不想进入 OutOfMemory。 有人可以帮助我吗?请。

谢谢大家的帮助

【问题讨论】:

  • 图片太大,无法处理,需要太多内存。尝试使用resize(x, y) 看看会发生什么。
  • 首先感谢您的回答,我尝试了 resize(x, y),但正如我在这篇文章stackoverflow.com/questions/23371597/… 中所写的那样,处于“for 循环”中的代码需要很长时间到应用程序,我想知道是否有办法将位图变量转换为毕加索库接受的变量。
  • 将位图转换为文件会花费很多(很多)时间。我不知道有一种方法可以加快您想做的事情(对不起)。在我看来,唯一的解决方案似乎是降低你正在做的工作,因为如果你有很多图像处理总是需要时间。多少顺便说一句?
  • 实际上我有 50 张图像 1920 x 1080 并且应用程序可以正常工作,但我想要动态调整大小,因为当我进入 viewpager 时,应用程序会继续创建 Grow-Heap Frag Case ,也不知道这样好不好。

标签: android bitmap picasso


【解决方案1】:

你可以使用下面的代码来做到这一点

private Target target = new Target() {
      @Override
      public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
        //TODO: Store bitmap in global vaiable
      }
      @Override
      public void onBitmapFailed() {
      }
}

private void loadBitmap(String url) {
   Picasso.with(this).load(url).into(target);
}

@Override 
public void onDestroy() {  // could be in onPause or onStop
   Picasso.with(this).cancelRequest(target);
   super.onDestroy();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    相关资源
    最近更新 更多