2014-04-30 13 views
8

Używam biblioteki Picasso do ładowania obrazów w przeglądarce stron, ale muszę załadować mapę bitową, a Picasso akceptuje tylko zmienną pliku. Jak mogę wczytać mapę bitową za pomocą Picassa?Załaduj bitmapę za pomocą Picassa

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

Jeśli kładę imagecompress w funkcji obciążenia Picasso, mam ten błąd: Nie można rozwiązać metodą „obciążenie (android.graphics.Bitmap)”.

Właściwie dla obrazów obciążenia używam poniżej kodu:

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

Ale obrazy są duże i nie chcę iść w OutOfMemory. Ktoś może mi pomóc? Proszę.

Dziękuję wszystkim pomoże mi

+0

obraz jest zbyt duży, aby proces, wymagający zbyt dużo pamięci. Spróbuj użyć 'resize (x, y)' i zobacz, co się stanie. – shkschneider

+0

Przede wszystkim dziękuję za odpowiedź, próbowałem zmienić rozmiar (x, y), ale jak napisałem w tym poście http://stackoverflow.com/questions/23371597/resize-an-image-in-viewpager-only- Jeśli jest widoczny, że kod znajdujący się w "pętli for" zabiera dużo czasu do aplikacji, chciałem się dowiedzieć, czy istnieje sposób na konwersję zmiennej Bitmap w zmiennej, którą akceptuje biblioteka Picasso. – Matteo

+0

Konwersja bitmapy do pliku zajęłaby dużo (dużo) dłużej. Nie znam sposobu na przyspieszenie tego, co chcesz zrobić (przepraszam). Wydaje mi się, że tylko rozwiązanie niweluje twoją pracę, ponieważ przetwarzanie obrazów zawsze zajmie trochę czasu, jeśli masz ich wiele. Ile BTW? – shkschneider

Odpowiedz

1

Można użyć kodu miech to zrobić

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(); 
}