2015-06-08 25 views
5

tôi cần phải tải một bitmap, có nghĩa là trong hệ thống tập tin, vào mảng byte để tải nó lên nhưng cần phải được:Picasso để tải byte mảng

  • thay đổi kích thước để 500x500 và theo byte [].
  • Async

tôi có thể làm điều đó với lướt

Glide.with(context) 
    .load(“/user/profile/photo/path”) 
    .asBitmap() 
    .toBytes() 
    .centerCrop() 
    .into(new SimpleTarget<byte[]>(250, 250) { 
     @Override 
     public void onResourceReady(byte[] data, GlideAnimation anim) { 
      // Post your bytes to a background thread and upload them here. 
     } 
    }); 

nhưng tôi không muốn đưa nó chỉ cho điều đó. Bất kỳ cách nào để làm điều đó với picasso?

+0

'một bitmap, có nghĩa là trong file system'. ??? Làm thế nào điều đó là có thể? Xin vui lòng cho một ví dụ. – greenapps

+0

@greenapps Tôi đang ở trong tình huống tương tự. Trong trường hợp của tôi, tôi nhận được một hình ảnh như một chuỗi (mã hóa base64) và tôi muốn hiển thị nó với một thư viện (để có được tối ưu hóa hiệu năng). – lrn2prgrm

Trả lời

0

Hãy thử giải pháp này

Bitmap bmp = intent.getExtras().get("data"); 
ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
byte[] byteArray = stream.toByteArray(); 
+0

Nhưng tôi cần nó không đồng bộ, vì vậy Glide có một cách để làm điều đó dễ dàng và tôi đã hỏi nếu có một với picasso. – Caipivara

+0

Thay đổi kích thước bitmap đầu tiên "Bitmap b = BitmapFactory.decodeByteArray (imageAsBytes, 0, imageAsBytes.length) b = Bitmap.createScaledBitmap (b, 120, 120, false));" và sau đó chuyển đổi thành byte –

+0

Kèm theo mã này trong một asynctask. bạn có thể tìm thấy hướng dẫn tốt cho nó ở đây. http://programmerguru.com/android-tutorial/android-asynctask-example/ –