Я нажимаю на изображение из галереи и пытаюсь сохранить его в новой папке, но я получаю сообщение об ошибке ниже, может кто-нибудь, пожалуйста, помогите.
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
Вызов функции saveImage:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null) {
Uri pickedImage = data.getData();
String[] filePath = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(pickedImage, filePath, null, null, null);
cursor.moveToFirst();
String imagePath = cursor.getString(cursor.getColumnIndex(filePath[0]));
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
bitmap = BitmapFactory.decodeFile(imagePath, options);
cursor.close();
}
try {
saveImage(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
Toast.makeText(this, "Image Saved", Toast.LENGTH_SHORT).show();
finish();
}
Код сохранения моего изображения:
public void saveImage(Bitmap finalBitmap) throws IOException {
String root = Environment.getExternalStorageDirectory().getAbsolutePath();
File myDir = new File(root + "/saved_images");
myDir.createNewFile();
String imageName = String.format("%d.png", System.currentTimeMillis());
File file = new File(myDir, imageName);
if (file.exists()) file.delete();
try {
FileOutputStream out = new FileOutputStream(file);
finalBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Ошибка в этой строке, finalBitmap всегда равен нулю;
finalBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);