Im essayant de sérialiser une classe dans laquelle j'ai une variable bitmap. Voici le code qui est un peu de travail .... je besoin d'aide pour savoir ce qui est encore mal .....android comment enregistrer un bitmap - code buggy
private Bitmap myVideoScreenshotBm;
private void writeObject(ObjectOutputStream out) throws IOException{
out.writeInt(myVideoScreenshotBm.getRowBytes());
out.writeInt(myVideoScreenshotBm.getHeight());
out.writeInt(myVideoScreenshotBm.getWidth());
int bmSize = myVideoScreenshotBm.getHeight() * myVideoScreenshotBm.getRowBytes();
ByteBuffer dst= ByteBuffer.allocate(bmSize);
myVideoScreenshotBm.copyPixelsToBuffer(dst);
byte[] bytesar=new byte[bmSize];
dst.position(0);
dst.get(bytesar);
out.write(bytesar);
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException{
int nbRowBytes=in.readInt();
int height=in.readInt();
int width=in.readInt();
//
int bmSize = nbRowBytes * height;
byte[] toread= new byte[bmSize];
in.read(toread, 0, toread.length);
ByteBuffer dst= ByteBuffer.allocate(bmSize);
dst.put(toread);
dst.position(0);
myVideoScreenshotBm=Bitmap.createBitmap(width, height, Bitmap.Config.ALPHA_8);
myVideoScreenshotBm.copyPixelsFromBuffer(dst);
}
Im ne reçoit pas une erreur mais le bitmap Im se sont mal ... aussi, je ne sais pas comment savoir quel drapeau Bitmap.Config est approprié ... comment savoir?
toute aide?
Je suis un débutant dans le monde de Java/Android et j'ai mis en place votre exemple de code pour ma classe. Il possède également des propriétés de types primitifs et une propriété de type Bitmap. Cependant, dans la méthode readObject, j'obtiens une exception OptionalDataException lorsque j'essaie de lire la première propriété, c'est-à-dire. "imageSource = (Chaîne) in.readObject();" Je ne sais pas pourquoi cela se passe - toutes les idées seraient grandement appréciées. Merci ... – codedog
Je ne vois que deux raisons possibles. Tout d'abord, l'Exception elle-même vous dit: "Signale que la classe ObjectInputStream a rencontré un type primitif (int, char etc.) au lieu d'une instance d'objet dans le flux d'entrée." – Fabien
Deuxième. Peut-être ne lisez-vous pas les données dans le même ordre que vous les avez écrites dans l'objet sérialisé. Attention à respecter l'ordre ... d'abord écrit, d'abord à lire. – Fabien