Я пытаюсь загрузить удаленный образ с сервера, и благодаря большому количеству примеров кода на stackoverflow у меня есть решение, которое работает в 2 из 3 изображений. Я действительно не знаю, в чем проблема с третьим изображением, и иногда, когда код запускается в отладчике, изображение загружается. Также, если я сначала загружаю проблемное изображение, другие два изображения иногда не загружаются.
Вот код:
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;
}
}
Во время отладки я обнаружил, что o.outWidth равен -1, что указывает на ошибку, но исключение не выдается, поэтому я не могу точно сказать, что пошло не так. InputStream всегда возвращал допустимое значение, и я знаю, что изображение существует на сервере.
С наилучшими пожеланиями,
Daniel