2014-04-30 28 views
8

Tôi đang sử dụng thư viện Picasso để tải hình ảnh trong chế độ xem, nhưng tôi cần tải bitmap và Picasso chỉ chấp nhận biến Tệp. Làm thế nào tôi có thể tải tập tin bitmap bằng Picasso?Tải bitmap với Picasso

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

Nếu tôi đặt imagecompress trong hàm tải của Picasso, tôi đã báo lỗi này: Không thể giải quyết phương pháp 'tải (android.graphics.Bitmap)'.

Trên thực tế cho hình ảnh tải tôi sử dụng mã dưới đây:

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

Nhưng hình ảnh này là lớn và tôi không muốn đi trong OutOfMemory. Ai đó có thể giúp tôi? Xin vui lòng.

Cảm ơn tất cả các bạn giúp tôi

+0

Những hình ảnh quá lớn để quá trình, đòi hỏi quá nhiều bộ nhớ. Hãy thử sử dụng 'thay đổi kích thước (x, y)' và xem điều gì xảy ra. – shkschneider

+0

Trước hết cảm ơn bạn đã trả lời, tôi đã thử thay đổi kích thước (x, y), nhưng như tôi đã viết trong bài đăng này http://stackoverflow.com/questions/23371597/resize-an-image-in-viewpager-only- nếu có thể nhìn thấy, đoạn mã đó nằm trong "vòng lặp for" mất một thời gian dài cho ứng dụng, tôi muốn biết nếu có một cách để chuyển đổi biến Bitmap trong một biến mà thư viện Picasso chấp nhận. – Matteo

+0

Chuyển đổi bitmap thành tệp sẽ mất nhiều (nhiều) lâu hơn. Tôi không biết một cách để tăng tốc độ những gì bạn muốn làm (xin lỗi). Chỉ có giải pháp dường như với tôi để giảm công việc bạn đang làm, bởi vì xử lý hình ảnh luôn luôn sẽ mất thời gian nếu bạn có nhiều. Bao nhiêu BTW? – shkschneider

Trả lời

1

Bạn có thể sử dụng mã dưới đây để làm điều này

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(); 
} 
Các vấn đề liên quan