IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

Lire un .tif comme si c'était un .gif


Sujet :

2D Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Lire un .tif comme si c'était un .gif
    Plop les gens,

    Mon jeu est en pixel art, donc en général j'utilise de gifs animé pour toute animations, mais lorsque j'ai besoin de faire un éclairage frémissant ou une matière transparente cela deviens un peut plus embêtant.
    Bien sur je peux faire une succession de png mais bon, c'est bien moins pratique à dessiner et enregistrer séparément. Alors ce que je voudrais faire c'est des tif animé ! J'ai déjà tenté de lui faire croire que c'était un gif mais Java n'est pas dupe... , j'ai aussi essayé de copier la classe de base qui gère le gif mais le soucis c'est qu'elle est imbriquée dans tellement de choses que cela en deviens impossible... Donc je pensais faire au plus simple : lire l'image moi même, recomposer chaque calques et les lires successivement avec une cadence choisie.

    Quelqu'un saurait comment je pourrais faire ça ?
    Sinon, vous, comment faites vous vos images animées en java ?
    (je précise que je suis hostile aux librairies, je préfère faire tout les codes moi, même si je dois y passer du temps au moins je saurais précisément avec quoi je travail et comment cela fonctionne.)

    Merci de votre aide potentiel !

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Je te remercie, j'irais explorer !

    Le soucis c'est que je travail avec Photoshop 7.0 et qu'il ne fait pas de fichier .apng. Il existe des logiciels sympa qui convertissent un psd à apng à ta connaissance ?

  4. #4
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    En fait ce que j'aimerais faire c'est lire un fichier avec l’extension tif et en faire des png que je rangerais dans un tableau pour les lires.
    Le soucis c'est que je ne sais pas comment lire une image manuellement, la j’expérimente avec le png pour avoir une petite idée de ce que cela peut donner et je suis déjà perdu. Quelqu'un aurais une idée pour m'aider ?

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,
    Citation Envoyé par -WalakaZ- Voir le message
    En fait ce que j'aimerais faire c'est lire un fichier avec l’extension tif et en faire des png que je rangerais dans un tableau pour les lires.
    Le soucis c'est que je ne sais pas comment lire une image manuellement, la j’expérimente avec le png pour avoir une petite idée de ce que cela peut donner et je suis déjà perdu. Quelqu'un aurais une idée pour m'aider ?
    Puisque tu travailles sous photoshop, pourquoi ne pas l'utiliser pour convertir les tif en png, une fois pour toute ?

    Sinon, Java de base ne lis pas le tif : il y eu une époque où on pouvait utiliser JAI (l'extension de Sun pour les gestions images), mais le projet a été démantelé, au point qu'il est assez pennible de trouver comment le charger même une ancienne version (mais on peut). Sa partie ImageIO a intégré le JDK, et le reste est dispersé. Je ne crois pas que les SPI pour le TIFF ait été embarqué depuis, dans le JDK . Tu peux le vérifier par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Iterator<ImageReader> reader = ImageIO.getImageReadersByFormatName("TIFF");
    Si l'itérateur n'est pas vide, alors c'est que tu peux lire du tif comme n'importe quel autre format supporté (png, jpg, gif de base, + BMP et WBMP hérité de JAI justement) ?

    Sinon, il faudrait trouver un SPI pour le TIFF (et un qui soit capable de traiter ton tif spécifique). Tu auras plus vite fait de convertir ton tif en png.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par -WalakaZ- Voir le message
    la j’expérimente avec le png pour avoir une petite idée de ce que cela peut donner et je suis déjà perdu. Quelqu'un aurais une idée pour m'aider ?
    Là, il n'y a rien de plus simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ImageIO.read( File ou Url );
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Vous n'avez pas compris. Il ne s'agit pas de convertir en png. J'ai fais des centaines.milliers d'images en png pour mon jeu, ca va, sans problème. Ce que je cherche c'est faire des animations de la façon la plus simple possible.

    Avant j'avais fais un code dans le nom des fichiers d'images, ainsi il lisais la suivante à chaque fois via un thread mais ce n'étais pas top.

    La solution la plus simple que j'ai trouvé (rapport code/facilitée pour moi de créer le fichier) c'est créer des images png nommée de 1 à x dans un zip. A chaque balayage du paint je verrais s'il est temps de passer à l'image suivante ou non. Bref, j'ai ma solution.

    A propos de cette solution, quelqu'un saurait comment lire les fichiers contenus dans un zip ? (attention, pas extraire les fichiers, je veux simplement récupérer le fichier !!!)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Et quand je disais lire un png c'est le lire réellement, pas demander à Java de le lire.
    Je voulais monter l'image moi même. Mais j'ai plus ou moins trouvé.

  9. #9
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    C'est bon, j'ai réussit !

    Si ça intéresse quelqu'un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    public static List<Object> unzip(File file) throws FileNotFoundException, IOException {
    		List<Object> list = new ArrayList<Object>();
     
    		ZipFile zip = new ZipFile(file);
    		Enumeration<? extends ZipEntry> entries = zip.entries();
     
    		while(entries.hasMoreElements()) {
    			ZipEntry entry = (ZipEntry) entries.nextElement();
    			String name = entry.getName();
     
    			if(name.endsWith(".png")) {
    				long size = entry.getSize();
    				byte data[] = new byte[(int) size];
     
    				DataInputStream dataIn = new DataInputStream(zip.getInputStream(entry));
    				dataIn.readFully(data);
    				dataIn.close();
     
    				ByteArrayInputStream byteIn = new ByteArrayInputStream(data);
    			    list.add(ImageIO.read(byteIn));
     
    			    byteIn.close();
    			} else list.add(name);
    		}
     
    		zip.close();
     
    		return list;
    	}
    Sujet résolut pour ma part.

  10. #10
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    accessoirement si tu veux lire le zip à la demande au lieu de tout lire d'un coup, il y a l'option j'entube le classloader

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    File zipFile1 = ....;
    //.....
    URLClassLoader loader = new URLClassLoader(new URL[]{zipFile1.toURI().toURL(),zipFile2.toURI().toURL(),....});
    InputStream is = loader.getResourceAsStream("path/vers/monfichier.png");

  11. #11
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    En fait je récupère les fichiers dans le zip (les png de l'animation et un fichier qui à comme nom les valeurs de l’animation) pour créer une animation. Si je ne charge qu'une image mon animation vas être tristounette mais merci tout de même

  12. #12
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Ah, oui, je vois, tu ne voulais pas faire des animations à partir de tif, tu cherchais a te créer ton propre format maison d'animation de png, et tu voulais faire ça avec du tif multipart.

    Par contre la mise à jour sur le paint n'est pas forcément simple au niveau rating (on ne contrôle jamais les appels de paint()): l'alternative est de faire sa propre implémentation de Image en tenant compte du fonctionnement des ImageObserver, qui justement gère le rating.

    Question subsidiaire : pourquoi passer par DataInputStream, plutôt que de lire directement le stream depuis les ZipEntry ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  13. #13
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Alors en fait je charge mon zip, je stock toute les images dans un tableau.
    Quand je peint mon image je demande à l'objet de l'animation de me retourner sont image.

    Lui vas donc voir quand était la dernière requête du genre, et voir s'il n'a pas de retard et envoyer l'image actuel selon le temps en millisecondes. Du coup c'est totalement indépendant du reste, c'est uniquement basé sur le temps.

    Mes FPS sont fixé à 60 mais si jamais ça fluctue l'animation elle, reste méga stable.


    Je n'ai pas trouvé comment faire ça à partir des ZipEntry. Je vois que tu as l'air de savoir alors j'adorerais que tu m'explique !!! J'ai cherché pendant un sacré bout de temps !

  14. #14
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par -WalakaZ- Voir le message
    Je n'ai pas trouvé comment faire ça à partir des ZipEntry. Je vois que tu as l'air de savoir alors j'adorerais que tu m'explique !!! J'ai cherché pendant un sacré bout de temps !
    Je voulais dire "sans passer par un DataInputStream" intermédiaire, en lisant directement l'inputStream obtenue sur la ZipEntry par zipFile.getInputStream(zipEntry)Methode 1 (en listant directement l'inputStream de chaque ZipEntry) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public static List<Image> readImages(String filename) throws IOException {
       List<Image> images = new ArrayList<>();
       try(ZipFile zipFile = new ZipFile(filename)) {
          for( Enumeration<? extends ZipEntry> entries = zipFile.entries(); entries.hasMoreElements(); ) {
             ZipEntry zipEntry = entries.nextElement();
             if ( zipEntry.getName().endsWith(".png") ) {
                try(InputStream inputStream = zipFile.getInputStream(zipEntry)) {
                   images.add( ImageIO.read(inputStream) );
                }
             }
          }
       }
       return images;
    }
    Méthode 2 (avec encore moins d'InputStream) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public static List<Image> readImages(String filename) throws IOException {
       List<Image> images = new ArrayList<>();
       try(ZipInputStream inputStream = new ZipInputStream(new FileInputStream(filename))) {
          ZipEntry zipEntry;
          while( (zipEntry = inputStream.getNextEntry())!=null ) {
             if ( zipEntry.getName().endsWith(".png") ) {
                images.add( ImageIO.read(inputStream) );
             }
          }
       }
       return images;
    }
    Éventuellement, l'équivalent avec l'API stream, mais je trouve ça moins pratique à cause de la checkedexception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public static List<Image> readImages3(String filename) throws IOException {
       try(ZipFile zipFile = new ZipFile(filename)) {
          return zipFile.stream()
                        .filter(zipEntry-> zipEntry.getName().endsWith(".png"))
                        .map(zipEntry-> { try(InputStream inputStream = zipFile.getInputStream(zipEntry)) {
                                             return ImageIO.read(inputStream);
                                          } catch(IOException e) {
                                             throw new RuntimeException(e);
                                          }
                                        })
                        .collect(Collectors.toList());
       }
       catch(RuntimeException e) {
          if ( e.getCause() instanceof IOException ) {
             throw (IOException)e.getCause();
          }
          throw e;
       }
    }
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Alors, ta méthode trois ne passe pas sur mon Java^^
    Sinon milles merci, j'ai pris de ton code.

    ImageIO.read(zip.getInputStream(entry)) c'est tellement plus propre...
    Bon, je n'ai gagné que 10 ms mais c'est par principe ! Je te remercie, mis bout à bout tu me feras certainement gagner quelques secondes de vie. Je ne pensais pas qu'ImageIO était si souple !

  16. #16
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par -WalakaZ- Voir le message
    Alors, ta méthode trois ne passe pas sur mon Java^^
    C'est parce que ta version de Java est une vieile version plus supportée depuis des lustres (avril 2015 )

    Citation Envoyé par -WalakaZ- Voir le message
    ImageIO.read(zip.getInputStream(entry)) c'est tellement plus propre...
    ... mais attention à la fermeture du flux...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Si je sors mon jeu sous Java 8 je vais me sentir idiot en voyant la communauté qui peut y jouer x) Que Windows 95 et en dessous ne soient plus supporté OK, je comprends, mais 2000, XP et supérieure devraient l'être, surtout qu'XP est quand même leur plus grand succès.

    Fermer l'input stream tu veux dire ?

  18. #18
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Je ne parlais que de Java. Il y'a des failles qui sont découvertes et exploitées tous les jours, et il n'y a plus de mises à jour pour les contrer : c'est prendre des risques que ne pas faire la mise à niveau de Java. Et pour ce que ça coute de la faire, autant la faire. Si tu indiques que ton application est sous Java 8, ça n'empêchera personne d'y jouer, à moins qu'on ne fasse le choix de ne pas se mettre à jour le cas échéant. Par ailleurs, on n'empêchera pas des applications Java 8 de sortir puisque ça existe, donc ne pas faire la mise à jour nous empêchera de les faire fonctionner (alors que pas l'inverse).

    Et, oui, je parlais de fermer l'inputstream. C'est juste un reflexe qu''il vaut mieux prendre (avec le try-with-resource, ce n'est pas grand chose à faire). Dans ton cas particulier, fermer le ZipFile fermera les inputStream obtenus par getInputStream() (cf doc), donc au moins fermer le ZipFile est indispensable. Le but : libérer les ressources utilisées quand on en a plus besoin. En particulier, si tu charges des centaines ou des milliers d'images, comme tu l'as indiqué.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  19. #19
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2012
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2012
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Utiliser java 8 c'est privé les joueurs sous XP.
    Je travail sous XP, et je ne peux pas utiliser Java 8. Par contre lors de la distribution du jeu je vais compiler pour Java 7 et Java 8.

    Je n'ai pas des milliers d'animations lue par cette méthode (par encore) mais les simples images qui ne sont pas .zip, dois je fermer quelque chose en particulier ?

    edit : le zip était déjà fermé^^

  20. #20
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par -WalakaZ- Voir le message
    Utiliser java 8 c'est privé les joueurs sous XP.
    Pourquoi donc ? On peut installer Java 8 sur XP. Simplement Oracle ne peut pas garantir qu'il n'y ait pas de problème, puisque Microsoft ne support plus cet OS depuis lontemps (voir https://www.java.com/fr/download/faq/winxp.xml).
    Citation Envoyé par -WalakaZ- Voir le message
    Je travail sous XP, et je ne peux pas utiliser Java 8.
    Etrange.
    Citation Envoyé par -WalakaZ- Voir le message
    JPar contre lors de la distribution du jeu je vais compiler pour Java 7 et Java 8.
    Ça, ça sert à rien par contre : ton compilé en Java 7 tournera sous JVM 1.8. Inutile de compiler ton programme en Java 8, si tu n'utilises rien qui ne soit exclusivement Java 8.
    [QUOTE=-WalakaZ-;8293693]
    Je n'ai pas des milliers d'animations lue par cette méthode (par encore) mais les simples images qui ne sont pas .zip, dois je fermer quelque chose en particulier ?[/QUOTE
    A limite, on s'en moque, qu'il y ait un flux ou 2000 : toujours fermer ses flux._ Donc pareil pour une image "simple" : si tu ouvres un flux (InputStream, ou Reader) ferme-le. Si tu utilise ImageIO.read(File) ou ImageIO.read(URL), pas besoin, il est ouvert et fermé dans la méthode (on ne ferme que les flux qu'on ouvre soi-même, jamais ceux ouverts par d'autres codes ; en l'occurence, avec ces deux méthodes, tu n'auras même pas accès aux instances de flux, donc tu ne pourrais pas le faire de toute manière.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Lire un pdf comme une image
    Par Rippalka dans le forum C#
    Réponses: 5
    Dernier message: 29/06/2010, 09h12
  2. [AC-2000] mon formulaire s'ouvre comme si il était filtré
    Par Sefrou dans le forum IHM
    Réponses: 1
    Dernier message: 04/10/2009, 04h33
  3. Lire/écrire fichier comme pour les fichiers .ini
    Par AliHome dans le forum Windows Forms
    Réponses: 4
    Dernier message: 24/12/2008, 14h26
  4. lire du xml comme une table
    Par bossun dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 05/10/2007, 15h59
  5. Lire/écrire dans.zip comme si c'était un répertoire
    Par LadyWasky dans le forum Langage
    Réponses: 2
    Dernier message: 25/11/2005, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo