Im intentando serializar una clase en la que tengo una variable de mapa de bits. Aquí está el código que es un poco de trabajo .... Necesito ayuda para averiguar lo que sigue siendo incorrecto .....android cómo guardar un mapa de bits - código de error
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);
}
no estoy recibiendo un error, pero el mapa de bits Im que consigue son mal ... Además, no sé cómo saber qué indicador de Bitmap.Config es adecuado ... ¿cómo saberlo?
¿Alguna ayuda?
Soy un novato en el mundo de Java/Android y he implementado el código de muestra para mi clase. También tiene algunas propiedades de tipos primitivos y una propiedad de tipo Bitmap. Sin embargo, en el método readObject obtengo una OptionalDataException cuando intento leer la primera propiedad, es decir. "imageSource = (String) in.readObject();" No tengo idea de por qué sucede esto, cualquier idea sería muy apreciada. Gracias ... – codedog
Solo veo dos razones posibles. En primer lugar, la Excepción misma le dice: "Señala que la clase ObjectInputStream encontró un tipo primitivo (int, char, etc.) en lugar de una instancia de objeto en la corriente de entrada". – Fabien
Segundo. Puede ser que no esté leyendo los datos en el mismo orden en que los escribió en el objeto serializado. Tenga cuidado de respetar el orden ... primero escribió, primero para ser leído. – Fabien