У меня была похожая проблема, это будет исправлено:
if(BitmapFactory.decodeFile(Image[position])!=null)
{
Bitmap bitmap=Bitmap.createScaledBitmap(BitmapFactory.decodeFile(Image[position]), 32, 32, true);
imageView.setImageBitmap(bitmap);
}
else
{
Log.d("TAG", "unable to decode");
}
Основная причина проблемы в том, что decodeResource
возвращает вам ноль по одной из следующих причин:
- Файл изображения поврежден
- Нет разрешения на чтение
- Недостаточно памяти для декодирования файла
- Ресурс не существует
- Недопустимые параметры, указанные в переменной options.
UPADTE
, если вы не хотите декодировать файл дважды, как указано @Zoe, вы можете изменитькод decodeResource
, поэтому он будет проверяться нулем без необходимости делать это дважды, например:
public class BitmapScalingHelper
{
public static Bitmap decodeResource(Resources res, int resId, int dstWidth, int dstHeight)
{
Options options = new Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
options.inJustDecodeBounds = false;
options.inSampleSize = calculateSampleSize(options.outWidth, options.outHeight, dstWidth,
dstHeight);
options = new Options();
Bitmap unscaledBitmap = BitmapFactory.decodeResource(res, resId, options);
if(unscaledBitmap == null)
{
Log.e("ERR","Failed to decode resource" + resId + " " + res.toString());
return null;
}
return unscaledBitmap;
}
}