Я собираюсь сжать изображение с помощью метода Bitmap.compress()
.BitmapFactory.decodeFile возвращает null
Но когда я получаю 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
, который, кажется, хорошо.
Этот фрагмент кода хорошо работает в другом действии, но когда я копирую его в асинхронный поток, который я пытаюсь сжать и загрузить изображения, он разбился. Есть ли какие-то возможности, потому что асинхронная нить? Или что-то еще я не заметил?