Cuillère Posté(e) 22 février 2011 Share Posté(e) 22 février 2011 Bonjour à tous, j'ai un problème pour sérialiser et désérialiser des bitmaps. Voilà le code : public static void serialiserBitmap(String path,String urlKey, Bitmap bmp) throws IOException{ ByteBuffer dst = null; byte[] bytesar = null; FileOutputStream fichier = new FileOutputStream(path); ObjectOutputStream out = new ObjectOutputStream(fichier); out.writeInt(bmp.getRowBytes()); out.writeInt(bmp.getHeight()); out.writeInt(bmp.getWidth()); int bmSize = bmp.getRowBytes() * bmp.getHeight(); if(dst==null || bmSize > dst.capacity()) dst= ByteBuffer.allocate(bmSize); out.writeInt(dst.capacity()); dst.position(0); bmp.copyPixelsToBuffer(dst); if(bytesar==null || bmSize > bytesar.length) bytesar=new byte[bmSize]; dst.position(0); dst.get(bytesar); out.writeObject(urlKey); out.write(bytesar, 0, bytesar.length); } public static void deserialiserBitmap(String path) throws IOException, ClassNotFoundException{ File parent = new File(path); for(File f : parent.listFiles()){ if(f.getAbsolutePath().contains("images")){ FileInputStream fichier = new FileInputStream(f); ObjectInputStream in = new ObjectInputStream(fichier); ByteBuffer dst = null; byte[] bytesar = null; int nbRowBytes=in.readInt(); int height=in.readInt(); int width=in.readInt(); int bmSize=in.readInt(); String key = (String)in.readObject(); if(bytesar==null || bmSize > bytesar.length) bytesar= new byte[bmSize]; int offset=0; while(in.available()>0){ offset=offset + in.read(bytesar, offset, in.available()); } if(dst==null || bmSize > dst.capacity()) dst= ByteBuffer.allocate(bmSize); dst.position(0); dst.put(bytesar); dst.position(0); Bitmap bmp =Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); bmp.copyPixelsFromBuffer(dst); imagesEnCash.put(key, bmp); in.close(); } } } Mais je me retrouve avec des images complètement noires après la désérialisation. Si quelqu'un a une idée, merci ! EDIT : J'ai passé le tout au debugger et les tableau de bytes est uniquement rempli de 0. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.