Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Importare correttamente una GIF...?

    Salve. Ho importato una immagine GIF in questo modo: prima ho dichiarato un oggetto BufferedImage, e poi l'ho inizializzato così: oggetto = ImageIO.read (new File ("immagine.gif"));

    Nessun errore, quando eseguo il programma, la gif viene caricata ma il problema è che è ferma. Cioè, la gif che ho alterna due immagini statiche messe in sequenza, il problema è che nel programma l'animazione non c'è e mi visualizza solamente la prima immagine... come faccio?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Importare correttamente una GIF...?

    Originariamente inviato da Dreamer89
    l'ho inizializzato così: oggetto = ImageIO.read (new File ("immagine.gif"));
    È corretto e presuppone che la immagine sia nella "current working directory".

    Originariamente inviato da Dreamer89
    Nessun errore, quando eseguo il programma, la gif viene caricata ma il problema è che è ferma. Cioè, la gif che ho alterna due immagini statiche messe in sequenza, il problema è che nel programma l'animazione non c'è e mi visualizza solamente la prima immagine... come faccio?
    Java supporta tranquillamente le GIF animate. La questione semmai è vedere come hai visualizzato la immagine. Il BufferedImage l'hai usato ... dove e come?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Importare correttamente una GIF...?

    Originariamente inviato da andbin
    È corretto e presuppone che la immagine sia nella "current working directory".

    Java supporta tranquillamente le GIF animate. La questione semmai è vedere come hai visualizzato la immagine. Il BufferedImage l'hai usato ... dove e come?
    L'immagine si trova nella stessa cartella della classe. Come ho detto prima, ho istanziato l'oggetto all'interno della classe principale al di fuori di metodi in questo modo: private BufferedImage oggetto;
    Poi nel costruttore carico l'immagine: oggetto = ImageIO.read (new File ("immagine.gif"));

    L'ho poi disegnata nel metodo paintComponent così: g.drawImage (oggetto, x, y, null);

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Importare correttamente una GIF...?

    Originariamente inviato da Dreamer89
    L'ho poi disegnata nel metodo paintComponent così: g.drawImage (oggetto, x, y, null);
    Eccola proprio lì la questione!!! Il quarto parametro è un ImageObserver. Certo ... puoi anche metterlo a null ma così l'animazione non funziona. ImageObserver è una interfaccia che definisce il metodo che se implementato in un oggetto consente di ricevere tutte le "notifiche" circa lo stato di caricamento e avanzamento della immagine.
    Se passi un null, nessun oggetto sarà notificato, quindi non ci può essere alcun "avanzamento" della immagine. Visto che tutti i componenti (tutti quelli che derivano da java.awt.Component) implementano ImageObserver, se hai esteso ad esempio JPanel basta semplicemente che passi il 'this'.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5

    Re: Re: Re: Re: Importare correttamente una GIF...?

    Originariamente inviato da andbin
    Eccola proprio lì la questione!!! Il quarto parametro è un ImageObserver. Certo ... puoi anche metterlo a null ma così l'animazione non funziona. ImageObserver è una interfaccia che definisce il metodo che se implementato in un oggetto consente di ricevere tutte le "notifiche" circa lo stato di caricamento e avanzamento della immagine.
    Se passi un null, nessun oggetto sarà notificato, quindi non ci può essere alcun "avanzamento" della immagine. Visto che tutti i componenti (tutti quelli che derivano da java.awt.Component) implementano ImageObserver, se hai esteso ad esempio JPanel basta semplicemente che passi il 'this'.
    Ho esteso a JPanel ma anche se metto this non cambia nulla...

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Re: Re: Importare correttamente una GIF...?

    Originariamente inviato da Dreamer89
    Ho esteso a JPanel ma anche se metto this non cambia nulla...
    Mi sembra strano ... quanto ti ho appena detto è giusto. A questo punto siamo sicuri che quella tua gif sia animata??? Aprila in un browser e vedi subito ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7

    Re: Re: Re: Re: Re: Re: Importare correttamente una GIF...?

    Originariamente inviato da andbin
    Mi sembra strano ... quanto ti ho appena detto è giusto. A questo punto siamo sicuri che quella tua gif sia animata??? Aprila in un browser e vedi subito ...
    E' una semplice gif animata
    Questa:

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Dreamer89
    E' una semplice gif animata
    Perfetto ... ma mi stavo dimenticando io di una cosa. Con la read() di ImageIO non puoi gestire GIF animate. Con le classi nel package javax.imageio potresti, a dire il vero, caricare ed ottenere i singoli frame, ma poi gestirli, temporizzarli e visualizzarli sarebbe tutto a tuo carico.
    No, in effetti devi usare il sistema di caricamento di AWT (Toolkit) o anche solo ImageIcon (che usa appunto le API di AWT).

    Quelle poche volte che mi è capitato di dover usare GIF animate effettivamente usavo sempre ImageIcon.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  9. #9
    Bene grazie mille. Ma potresti dirmi quali sono le differenze tra:

    Icon
    ImageIcon
    Image
    BufferedImage

    ?

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Dreamer89
    Ma potresti dirmi quali sono le differenze tra:

    Icon
    ImageIcon
    Image
    BufferedImage

    ?
    Icon è una interfaccia.
    ImageIcon è una implementazione concreta di Icon.
    Image è la classe astratta che rappresenta la "base" per tutte le immagini in Java (ImageIcon internamente ha nient'altro che un campo Image).
    BufferedImage è una implementazione concreta di Image che offre un buffer accessibile della immagine.

    Nel tuo caso ti basta creare un ImageIcon (tramite URL o nome di file ... vedi tu) e poi prendere l'Image con getImage(). La image la disegni sul tuo componente in paintComponent() con:
    g.drawImage (img, x, y, this);
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.