Tôi cố gắng tải một hình ảnh từ xa từ máy chủ và nhờ vào nhiều ví dụ mã trên stackoverflow Tôi có một giải pháp hoạt động ở 2 trong số 3 hình ảnh. Tôi không thực sự biết vấn đề là gì với hình ảnh thứ ba và đôi khi khi cho phép mã chạy trong trình gỡ rối ảnh đang tải. Ngoài ra nếu tôi tải hình ảnh vấn đề đầu tiên hai hình ảnh khác đôi khi không được tải.BitmapFactory.decodeStream trả về null mà không có ngoại lệ
Đây là mã:
public static Drawable getPictureFromURL(Context ctx, String url, final int REQUIRED_SIZE) throws NullPointerException {
//Decode image size
BitmapFactory.Options o = new BitmapFactory.Options();
int scale = 1;
if (o.outWidth > REQUIRED_SIZE) {
scale = (int) Math.pow(2, (int) Math.round(Math.log(REQUIRED_SIZE/(double) Math.max(o.outHeight, o.outWidth))/Math.log(0.5)));
}
Log.i(Prototype.TAG, "scale: "+scale);
//Decode with inSampleSize
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
Bitmap bmp;
try {
bmp = BitmapFactory.decodeStream((InputStream) Tools.fetch(url), null, o2);
if(bmp!=null)
return new BitmapDrawable(ctx.getResources(), bmp);
else
return null;
} catch (Exception e) {
Log.e(Prototype.TAG, "Exception while decoding stream", e);
return null;
}
}
Trong gỡ lỗi tôi phát hiện ra rằng o.outWidth là -1 mà chỉ một lỗi, nhưng không có ngoại lệ được ném ra, vì vậy tôi có thể không thực sự biết những gì đã xảy ra. InputStream luôn trả về giá trị hợp lệ và tôi biết rằng hình ảnh tồn tại trên máy chủ.
Best wishes, Daniel
+1, nhưng có vẻ như bây giờ mà những hình ảnh đang được tải về theo thứ tự thay vì song song (Tôi đang vẽ từng hình ảnh trên một AsyncTask riêng biệt). Ít nhất nó hoạt động .. – kellogs