Perte de qualité

sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 - 27 mai 2006 à 16:50
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 - 27 mai 2006 à 20:46
bjr a tous,
voila je usis en train de faire un plateau de jeu avec un cadrillage d'image j'ai utiliser des image unicolor jusqua maintenant
j'ai reussi a serialiser le tout pour faire une sauvegarde en convertissant les image en tableau de int
j'ai reussi a partir de se tableau de recuperer les image
jusque la c'est idyllique mais voila depuis que j'utilise des texture plus avancé quand je charge un fichier enregistrer l'image ets brouillé
avait vous une idee ?
besoin d'un morceau de code ?

merci
++

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
A voir également:

3 réponses

Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
27 mai 2006 à 18:20
Salut,

tu peux donner le bout de code qui permet de creer l'image gent BufferedImage im = .... et aussi cell qui te permet de serialiser l'image que l'on puisse y voir plus clair sur comment tu fais

sinon si tu n'y arrive pas dis toi que j'ai un truc identique qui fonctione je peux te l'envoyer par mail :P

WORA
0
sheorogath Messages postés 2448 Date d'inscription samedi 21 février 2004 Statut Modérateur Dernière intervention 29 janvier 2010 17
27 mai 2006 à 18:42
le code est assez gros donc je ne vais passer que les methode prncipale :

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
 public void getArrayFromImage() {
  int[] pixels = new int[width * heigth];
  PixelGrabber pg = new PixelGrabber(img, 0, 0, width, heigth, pixels, 0,
    width);
  try {
   pg.grabPixels();
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  stored = new ImageStored(heigth, width, pixels);
 }


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 public void getImageFromArray() {
  int xstore = stored.getX();
  int ystore = stored.getY();
  int[] imgStored = stored.getImage();
  MemoryImageSource mis = new MemoryImageSource(xstore, ystore,
    imgStored, 0, 0);
  Toolkit tk = Toolkit.getDefaultToolkit();
  img = tk.createImage(mis);
 }

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
dans Terrain classe abstaire commune a tout les terrain => img est l'image du Terrain

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public void saveMap(String path){
  try {
   ImgAsInt();
   ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(path));
   out.writeObject(this);
   out.flush();
   out.close();
   File original = new File(path);
   String newname = null;
   if(path.endsWith(".map")){
     newname = path.substring(0,(path.length()-".map".length()))+".zmap";
   }else if(!(path.endsWith("map")||!(path.endsWith(".zmap")))){
    newname += ".zmap";
   }
   FileUtils.compress(original,new File(newname));
   original.delete();
  } catch (FileNotFoundException e){
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

methode d'enregistrement qui se trouve dans CaseLayout c'est a dire la classe 'moteur' celle qui organise les Terrain comme il se doit
je compresse mes fichier d'enregistrement avec :

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public static void compress(File src , File dest) throws ZipException, IOException{
  FileOutputStream fout = new FileOutputStream(dest);
  ZipOutputStream zout = new ZipOutputStream(fout);
  ZipEntry ze = new ZipEntry(src.getName());
  zout.putNextEntry(ze);
  FileInputStream in = new FileInputStream(src);
   byte[] tab=new byte[4096];
         int lu=-1;
         do
         {
              lu=in.read(tab);
              if(lu>0)
                   zout.write(tab,0,lu);
         }while(lu>0);
         zout.finish();
        
         in.close();
        


  zout.closeEntry();
  zout.close();
  fout.close();
  in.close();
  
 }

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
les decompresse avec :

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
public static void decompress(File src , File dest) throws IOException{
  FileOutputStream fout = new FileOutputStream(dest);
  FileInputStream in = new FileInputStream(src);
  ZipInputStream zin = new ZipInputStream(in);
  ZipEntry zen = zin.getNextEntry();
   byte[] tab=new byte[4096];
         int lu=-1;
         do
         {
              lu=zin.read(tab);
              if(lu>0)
                   fout.write(tab,0,lu);
         }while(lu>0);
         fout.flush();
        
  zin.closeEntry();
  zin.close();
  fout.close();
  fout.close();
  in.close();
 }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
voila

merci

"n'est pas mort ce qui semble a jamais dormir et en d'etrange temps meme la mort peut mourrir"
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 111
27 mai 2006 à 20:46
Voila le code est envoyé par mail et les explications sont dans le mail :P meric de dire ici si cela correspond à tes besoins

et je re dis si tu fais des modifications qui valent le coups merci de me les envoyer que je puisse les intégrer (ca aide :P)

WORA
0
Rejoignez-nous