2013-05-20 11 views
14

Sto provando a configurare un semplice programma Java che crea una singola gif animata da più immagini (jpg). Qualcuno può darmi un gancio su come ottenere questo in Java? Ho già cercato su Google ma non ho trovato nulla di veramente utile.C'è un modo per creare un'immagine Gif da più immagini in Java?

Grazie ragazzi!

+0

Intendi una gif animata? o vuoi una grande gif fatta con qualche gif più piccola? O vuoi incollare una gif su un'altra usando la trasparenza di gif? – Dariusz

+0

Voglio una gif animata. – user2399314

+0

Questo [collegamento] (https://github.com/dragon66/icafe/wiki) ha molte più informazioni rispetto alla semplice creazione di GIF animate. – dragon66

risposta

24

Ecco un esempio di una classe che crea una gif animata da diverse immagini:

Link

La classe fornisce questi metodi:

class GifSequenceWriter { 
    public GifSequenceWriter(
     ImageOutputStream outputStream, 
     int imageType, 
     int timeBetweenFramesMS, 
     boolean loopContinuously); 

    public void writeToSequence(RenderedImage img); 

    public void close(); 
} 

E anche un piccolo esempio:

public static void main(String[] args) throws Exception { 
    if (args.length > 1) { 
    // grab the output image type from the first image in the sequence 
    BufferedImage firstImage = ImageIO.read(new File(args[0])); 

    // create a new BufferedOutputStream with the last argument 
    ImageOutputStream output = 
     new FileImageOutputStream(new File(args[args.length - 1])); 

    // create a gif sequence with the type of the first image, 1 second 
    // between frames, which loops continuously 
    GifSequenceWriter writer = 
     new GifSequenceWriter(output, firstImage.getType(), 1, false); 

    // write out the first image to our sequence... 
    writer.writeToSequence(firstImage); 
    for(int i=1; i<args.length-1; i++) { 
     BufferedImage nextImage = ImageIO.read(new File(args[i])); 
     writer.writeToSequence(nextImage); 
    } 

    writer.close(); 
    output.close(); 
    } else { 
    System.out.println(
     "Usage: java GifSequenceWriter [list of gif files] [output file]"); 
    } 
} 
+8

È buona norma includere la parte principale del contenuto collegato nella risposta, nel caso in cui il collegamento sia offline. – Pshemo

+0

Hai ragione, modifica ora. –

+0

Avete incluso solo l'interfaccia di classe 'GifSequenceWriter' (non c'è un corpo nel costruttore e metodi, quindi non possiamo davvero usarlo). La cosa più importante è [come è stata implementata] (http://elliot.kroo.net/software/java/GifSequenceWriter/GifSequenceWriter.java). – Pshemo