2013-09-04 25 views
11

Android uygulamamdaki görüntü yüklemesini işlemek için Picasso çerçevesini kullanıyorum. Görüntü yüklendikten sonra, bazı maskeleme işlemlerini uygulamak için Çizilebilir öğesine erişmem gerekiyor. Sorun, Picasso'nun Çizilebilir'i bir PicassoDrawable'a dönüştürmesi ve Drawable'a basit bir geri dönüşün işe yaramamasıdır.Picasso kullanırken nasıl çizilebilir?

 Picasso.with(mContext).load(image.getPath()).into(mImageView, new Callback() { 

      @Override 
      public void onSuccess() { 

       Util.applyMask(imageView); 
      } 

      @Override 
      public void onError() { 
      } 
     }); 

ve Util.applyMask (ImageView) yöntemi:

Bu

Ben kodu

public static void applyMask(ImageView imageView) { 

    // this is where a class cast exception happens since it's actually a PicassoDrawable and not a Drawable 
    Bitmap mainImage = ((BitmapDrawable) imageView.getDrawable()).getBitmap(); 

// ... 
} 

Muhtemel bir çözüm, bu github sayısında Jake Wharton tarafından verilir: https://github.com/square/picasso/issues/38

Özetle

, çözümdür:. "Eğer Bitmap erişimi istiyorsanız doğrudan o zaman hedef geri aramalar kullanmanız gerekir PicassoDrawable fa sağlamak için kullanılır Ding ve hata ayıklama göstergesi. "

Hedef geri aramaya nasıl erişileceğinden tam olarak emin değilim. Bunu nasıl çözecek bilen var mı?

Teşekkürler.

private Target target = new Target() { 
     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {  
     } 

     @Override 
     public void onBitmapFailed() { 
     } 
    } 

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

cevap

33

Bu

github ( https://github.com/square/picasso/issues/38) de cevap verilmiştir
+0

kredisi: – Henrique

+4

@dnkoutso Bunun yerine 'Transformation' yoluyla maske uygulamalıdır. Bu, ana iş parçacığı üzerinde çalışmaktan kaçınacak ve ayrıca Picasso, bellekte son bitmap'i önleyecek. Tekrar soruyorsan, işi tekrar yapmak zorunda kalmayacaksın. – dnkoutso

+0

Ayrıca cevabı doğru olarak işaretlemelisiniz :) – dnkoutso

İlgili konular