Я собираюсь сжать изображение методом Bitmap.compress().
Но когда я получаю Bitmap с помощью bitmap = BitmapFactory.decodeFile(), я получаю объект null, и метод не выдает никаких исключений.
Вот мой код
public static File compressImage(String imagePath) throws IOException {
// Get bitmap
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options);
// Get bitmap output stream
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);
......
Когда код запускается в последней строке, я получаю NullPointerException :
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.graphics.Bitmap.compress(android.graphics.Bitmap$CompressFormat, int, java.io.OutputStream)' on a null object reference
Затем я запускаю свой код в режиме отладки, оказывается, я получил объект null из метода BitmapFactory.decodeFile.
Параметр imagePath есть
/storage/emulated/0/DCIM/Camera/IMG_20160610_195633.jpg
что кажется в порядке.
Этот фрагмент кода хорошо работает в другом действии, но когда я копирую его в асинхронный поток, который я пытаюсь сжать и загрузить изображения, происходит сбой. Есть ли вероятность, что это связано с асинхронным потоком? Или я еще что-то не заметил?