Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2683 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Faire tourner un Gif une seule fois.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Faire tourner un Gif une seule fois.

n°2225339
Yainima
Posté le 17-04-2014 à 08:42:45  profilanswer
 

Bonjour !

 

Je poste aujourd'hui car cela fais bientôt un mois que je suis purement et simplement bloqué sur un programme, à l'apparence pourtant facile.
Mon programme est le suivant :

 
Code :
  1. import java.awt.*;
  2. import javax.swing.*;
  3. import java.awt.event.*;
  4. class NewAnimV3 extends JComponent {
  5. public static void main(String[] args) {
  6. //System.setProperty("apple.awt.brushMetalLook", "true" );
  7. JFrame f = new JFrame("" );
  8. NewAnimV3 anim = new NewAnimV3();
  9. //anim.init();
  10. anim.start();
  11. f.getContentPane().add(anim);
  12. f.pack();
  13. f.setVisible(true);
  14. }
  15. Image image;
  16. public void start() {
  17. image=Toolkit.getDefaultToolkit().getImage("C:/Coin_03_june.gif" );
  18. setSize(180,180);
  19. setPreferredSize(new Dimension(180,180));
  20. }
  21. protected void paintComponent(Graphics g) {
  22.     // efface le contenu précédent :
  23.     g.fillRect(0, 0, this.getWidth(), this.getHeight());
  24.    int i;
  25.     // dessine le gif :
  26.    for (i=1; i<=1; i++) {
  27.    g.drawImage(image,0,0,Color.white,this);
  28.    if (i>1) {
  29.     g.drawImage(image,0,0,Color.white,null);
  30.    }
  31. }
  32.     }
  33. }
 

Il anime mon image gif, et je suis déjà satisfaite avec sa. Cependant, je désire l'animer une fois car il sera lancé par un autre programme (un Pile ou Face). C'est pourquoi j'ai besoin que mon gif s'anime seulement une fois.

 

Pourrais-je avoir de l'aide ? J'ai beau me triturer les méninges et essayer diverses choses, je n'arrive pas au bon résultat...
Merci d'avance !

Message cité 1 fois
Message édité par Yainima le 17-04-2014 à 09:07:04
mood
Publicité
Posté le 17-04-2014 à 08:42:45  profilanswer
 

n°2225365
honrisse
Posté le 17-04-2014 à 12:32:41  profilanswer
 

Yainima a écrit :

Bonjour !
 
Je poste aujourd'hui car cela fais bientôt un mois que je suis purement et simplement bloqué sur un programme, à l'apparence pourtant facile.
Mon programme est le suivant :
 

Code :
  1. import java.awt.*;
  2. import javax.swing.*;
  3. import java.awt.event.*;
  4. class NewAnimV3 extends JComponent {
  5. public static void main(String[] args) {
  6. //System.setProperty("apple.awt.brushMetalLook", "true" );
  7. JFrame f = new JFrame("" );
  8. NewAnimV3 anim = new NewAnimV3();
  9. //anim.init();
  10. anim.start();
  11. f.getContentPane().add(anim);
  12. f.pack();
  13. f.setVisible(true);
  14. }
  15. Image image;
  16. public void start() {
  17. image=Toolkit.getDefaultToolkit().getImage("C:/Coin_03_june.gif" );
  18. setSize(180,180);
  19. setPreferredSize(new Dimension(180,180));
  20. }
  21. protected void paintComponent(Graphics g) {
  22.     // efface le contenu précédent :
  23.     g.fillRect(0, 0, this.getWidth(), this.getHeight());
  24.    int i;
  25.     // dessine le gif :
  26.    for (i=1; i<=1; i++) {
  27.    g.drawImage(image,0,0,Color.white,this);
  28.    if (i>1) {
  29.     g.drawImage(image,0,0,Color.white,null);
  30.    }
  31. }
  32.     }
  33. }


 
Il anime mon image gif, et je suis déjà satisfaite avec sa. Cependant, je désire l'animer une fois car il sera lancé par un autre programme (un Pile ou Face). C'est pourquoi j'ai besoin que mon gif s'anime seulement une fois.
 
Pourrais-je avoir de l'aide ? J'ai beau me triturer les méninges et essayer diverses choses, je n'arrive pas au bon résultat...  
Merci d'avance !


 
 
Bonjour,
 
L'idée serait de ne pas utiliser un gif :) mais d'afficher plutôt une succession d'images : How to get a normally-repeating gif to only display once ou How to make a gif run once and stop in Java?.
 
Par exemple extraire les images du gif avec un outil en ligne : http://gif-explode.com/ et afficher les images avec une tempo entre chaque affichage :

Code :
  1. import java.awt.Dimension;
  2. import java.awt.event.ActionEvent;
  3. import java.awt.event.ActionListener;
  4. import java.awt.image.BufferedImage;
  5. import java.io.File;
  6. import java.io.IOException;
  7. import javax.imageio.ImageIO;
  8. import javax.swing.ImageIcon;
  9. import javax.swing.JButton;
  10. import javax.swing.JFrame;
  11. import javax.swing.JLabel;
  12. import javax.swing.JPanel;
  13. import javax.swing.SwingUtilities;
  14. public class Main2 {
  15. public static void initAndShowGui() {
  16.  final JFrame f = new JFrame("Gif" );
  17.  final JLabel label = new JLabel();
  18.  JButton button = new JButton("Show gif once" );
  19.  try {
  20.   final BufferedImage[] frames = new BufferedImage[]{
  21.     ImageIO.read(new File("chemin vers le dossier/index.png" )),
  22.     ImageIO.read(new File("chemin vers le dossier/index1.png" )),
  23.     ImageIO.read(new File("chemin vers le dossier/index2.png" ))
  24.     };
  25.   button.addActionListener(new ActionListener() {
  26.    @Override
  27.    public void actionPerformed(ActionEvent arg0) {
  28.     Thread th = new Thread(new Runnable() {
  29.      @Override
  30.      public void run() {
  31.       for(final BufferedImage buff : frames) {
  32.        SwingUtilities.invokeLater(new Runnable() {
  33.         @Override
  34.         public void run() {
  35.          label.setIcon(new ImageIcon(buff));
  36.         }
  37.        });
  38.        try {
  39.         Thread.sleep(1000);
  40.        } catch (InterruptedException e) {
  41.         e.printStackTrace();
  42.        }
  43.       }
  44.      }
  45.     });
  46.     th.start();
  47.    }
  48.   });
  49.  } catch (IOException e) {
  50.   e.printStackTrace();
  51.  }
  52.  JPanel panel1 = new JPanel();
  53.  panel1.add(label);
  54.  JPanel panel2 = new JPanel();
  55.  panel2.add(button);
  56.  f.add("Center", panel1);
  57.  f.add("South", panel2);
  58.  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  59.  f.setMinimumSize(new Dimension(640, 480));
  60.  f.setLocationRelativeTo(null);
  61.  f.setVisible(true);
  62. }
  63. public static void main(String[] args) {
  64.  SwingUtilities.invokeLater(new Runnable() {
  65.   @Override
  66.   public void run() {
  67.    initAndShowGui();
  68.   }
  69.  });
  70. }
  71. }


 
 
Ou alors :  

Citation :

Actually there is: ImageReader.read(int) will read a single frame of an animated GIF. But it's probably easier to just keep each frame as a separate file. –  VGR


Message édité par honrisse le 17-04-2014 à 12:39:31
n°2226183
jeanbx54
Posté le 25-04-2014 à 00:42:50  profilanswer
 

salut, je souhterais faire la même chose, avoir que, la possibilité de lire une seule fois la video, ou que le giff ne tourne pas en boucle.
sur une page internet. pouvez-vous m'aider, je suis débutant. merci


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Faire tourner un Gif une seule fois.

 

Sujets relatifs
[débutant] Récupérer un vecteur avec une seule requête.VBA Excel, ouvrir une seule feuille d'un Workbook
[jquery] ca marche la première fois et pas les fois suivantesLancer deux fois le même .exe
Aperçus de plusieurs sites dans une seule pageGIF animé dans un JLabel
[VBA] Savoir si n'importe quel caractère défini est plusieurs fois...VBA : Copier/Coller cellule d'un fichier en lecture seule
faire apparaitre des pages sur une seule pageun algo qui supp le min et le max d'1 tableau à la fois SVP
Plus de sujets relatifs à : Faire tourner un Gif une seule fois.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR