2013-05-20 45 views
14

Tôi đang cố gắng thiết lập một chương trình Java đơn giản để tạo một gif động duy nhất từ ​​nhiều hình ảnh khác (jpg). Bất cứ ai có thể cho tôi một móc về cách để đạt được điều này trong Java? Tôi đã tìm kiếm trên Google nhưng không thể tìm thấy bất kỳ điều gì thực sự hữu ích.Có cách nào để tạo một hình ảnh Gif từ nhiều hình ảnh trong Java không?

Cảm ơn các bạn!

+0

Ý của bạn là gif động? hoặc bạn muốn có một gif lớn làm bằng một gif nhỏ hơn? Hay bạn muốn dán một gif vào một gif khác bằng cách sử dụng tính minh bạch của gif? – Dariusz

+0

Tôi muốn có một hình gif động. – user2399314

+0

[link] này (https://github.com/dragon66/icafe/wiki) có nhiều thông tin hơn là chỉ tạo GIF động. – dragon66

Trả lời

24

Ở đây bạn có một ví dụ của một lớp mà tạo ra một gif động từ hình ảnh khác nhau:

Link

Lớp cung cấp những phương pháp:

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

    public void writeToSequence(RenderedImage img); 

    public void close(); 
} 

Và cũng là một ví dụ nhỏ:

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

Tốt nhất nên bao gồm phần chính của nội dung được liên kết trong câu trả lời, trong trường hợp liên kết ngoại tuyến. – Pshemo

+0

Bạn đã đúng, đang chỉnh sửa ngay bây giờ. –

+0

Bạn chỉ bao gồm giao diện của lớp 'GifSequenceWriter' (không có nội dung trong hàm tạo và phương thức, vì vậy chúng tôi không thể sử dụng nó). Điều quan trọng nhất là [nó được triển khai như thế nào] (http://elliot.kroo.net/software/java/GifSequenceWriter/GifSequenceWriter.java). – Pshemo

Các vấn đề liên quan