2016-07-23 75 views
1

我正在使用毕加索。 我想先将图像添加到位图,然后将其添加到图像视图。我正在使用以下代码行,从uri库中添加图像,并在图像视图中显示它。我想先将它保存在位图上。我应该怎么做:使用毕加索将图片加载到位图中

Picasso.with(this).load(uriadress).into(imageView); 

但我想先保存在位图上。

回答

8

毕加索拥有Target实例与弱引用。
因此,最好把Target作为实例字段。
看到:https://stackoverflow.com/a/29274669/5183999

private Target mTarget; 

void loadImage(Context context, String url) { 

    final ImageView imageView = (ImageView) findViewById(R.id.image); 

    mTarget = new Target() { 
     @Override 
     public void onBitmapLoaded (final Bitmap bitmap, Picasso.LoadedFrom from){ 
      //Do something 
      ... 

      imageView.setImageBitmap(bitmap); 
     } 

     @Override 
     public void onBitmapFailed(Drawable errorDrawable) { 

     } 

     @Override 
     public void onPrepareLoad(Drawable placeHolderDrawable) { 

     } 
    }; 

    Picasso.with(context) 
      .load(url) 
      .into(mTarget); 
} 
+0

YESSSSSS,它正在工作。你能告诉我更多关于为什么制作一个实例对毕加索如此重要吗? – Shahryar

+1

如果您没有将'Target'设置为实例字段,'Target'将被垃圾收集。有关更多信息,请参阅此问题https://github.com/square/picasso/issues/352 – nshmura

3

你可以这样做

private Target image; 
image = new Target() { 
     @Override 
     public void onBitmapLoaded (final Bitmap bitmap, Picasso.LoadedFrom from){ 
      new Thread(new Runnable() { 
       @Override 
       public void run() { 
        File file = new File(Environment.getExternalStorageDirectory().getPath() + "/" + FILEPATH); 
        try { 
         file.createNewFile(); 
         FileOutputStream outstream = new FileOutputStream(file); 
         bitmap.compress(CompressFormat.JPEG, 75, outstream); 
         outstream.close(); 
        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }).start(); 
     } 
    } 
Picasso.with(this) 
     .load(currentUrl) 
     .into(image); 
+0

看看兄弟,这是工作,如果我要保存的位图。我不想保存它。我只想使用位图并将其保存为例如另一个位图,因为我想对其执行图像效果。 – Shahryar

+0

是否要缓存图像并在以后使用? – SaravInfern

+0

不,我只是想把它放在一些位图中,所以我可以将它发送到使用renderscript的另一个函数。我想要这样: onBitmapLoaded .... otherBitmap = bitmap; imageView.setImageBitmap(bitmap); 但它不工作的权利。尝试一下,你会看到。 – Shahryar