Transférer un bitmap en tant que Parceable dans un paquet entre deux activités n'est pas une bonne idée à cause de la limite de taille de Parceable (1mb). Vous pouvez stocker le bitmap dans un fichier dans le stockage interne et récupérer le bitmap stocké dans plusieurs activités. Voici un exemple de code.
Pour stocker un bitmap dans un fichier monImage dans le stockage interne :
public String createImageFromBitmap(Bitmap bitmap) {
String fileName = "myImage";//no .png or .jpg needed
try {
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
FileOutputStream fo = openFileOutput(fileName, Context.MODE_PRIVATE);
fo.write(bytes.toByteArray());
// remember close file output
fo.close();
} catch (Exception e) {
e.printStackTrace();
fileName = null;
}
return fileName;
}
Ensuite, dans l'activité suivante, vous pouvez décoder ce fichier myImage en un bitmap en utilisant le code suivant :
//here context can be anything like getActivity() for fragment, this or MainActivity.this
Bitmap bitmap = BitmapFactory.decodeStream(context.openFileInput("myImage"));
Note De nombreux contrôles de nullité et de mise à l'échelle des bitmaps sont omis.