Thanks to visit codestin.com
Credit goes to github.com

Skip to content

mr-Librian/APNG

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Documentation

Portable Network Graphics Specification (Third Edition)

Library Documentation

Examples

  1. import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.*;
    
    import com.librian.lib.APNGCollector;
    
    import static com.librian.lib.APNGCollector.*;
    
    void main() throws Exception {
        BufferedImage i1 = ImageIO.read(new File("./example/1.png")),
                      i2 = ImageIO.read(new File("./example/2.png")),
                      i3 = ImageIO.read(new File("./example/3.png")),
                      i4 = ImageIO.read(new File("./example/4.png"));
    
        APNGCollector apng = new APNGCollector(i1, 0, (short) 70, (short) 100, APNG_DISPOSE_OP_NONE, APNG_BLEND_OP_OVER);
        apng.addFrame(i2, 26, 40, (short) 70, (short) 100, APNG_DISPOSE_OP_NONE, APNG_BLEND_OP_OVER);
        apng.addFrame(i3, 26, 40, (short) 70, (short) 100, APNG_DISPOSE_OP_NONE, APNG_BLEND_OP_OVER);
        apng.addFrame(i2, 26, 40, (short) 70, (short) 100, APNG_DISPOSE_OP_PREVIOUS, APNG_BLEND_OP_OVER);
        apng.addFrame(i4, 40, 48, (short) 70, (short) 100, APNG_DISPOSE_OP_NONE, APNG_BLEND_OP_OVER);
        apng.addFrame(i2, 26, 40, (short) 70, (short) 100, APNG_DISPOSE_OP_NONE, APNG_BLEND_OP_OVER);
        apng.addFrame(i3, 26, 40, (short) 70, (short) 100, APNG_DISPOSE_OP_NONE, APNG_BLEND_OP_OVER);
    
        FileOutputStream f = new FileOutputStream("./test.png");
        f.write(apng.build());
        f.close();
    }

    input:
    output output output output

    output:
    input

  2. import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.*;
    
    import com.librian.lib.APNGCollector;
    
    import static com.librian.lib.APNGCollector.*;
    
    void main() throws Exception {
        BufferedImage i1 = ImageIO.read(new File("./example/1.png")),
                      i2 = ImageIO.read(new File("./example/2.png")),
                      i3 = ImageIO.read(new File("./example/3.png")),
                      i4 = ImageIO.read(new File("./example/4.png"));
    
        APNGCollector apng = new APNGCollector(i1, 0);
        apng.addFrame(i2, 26, 40, (short) 70, (short) 100, APNG_DISPOSE_OP_NONE, APNG_BLEND_OP_OVER);
        apng.addFrame(i3, 26, 40, (short) 70, (short) 100, APNG_DISPOSE_OP_NONE, APNG_BLEND_OP_OVER);
        apng.addFrame(i2, 26, 40, (short) 70, (short) 100, APNG_DISPOSE_OP_PREVIOUS, APNG_BLEND_OP_OVER);
        apng.addFrame(i4, 40, 48, (short) 70, (short) 100, APNG_DISPOSE_OP_NONE, APNG_BLEND_OP_OVER);
        apng.addFrame(i2, 26, 40, (short) 70, (short) 100, APNG_DISPOSE_OP_NONE, APNG_BLEND_OP_OVER);
        apng.addFrame(i3, 26, 40, (short) 70, (short) 100, APNG_DISPOSE_OP_NONE, APNG_BLEND_OP_OVER);
    
        FileOutputStream f = new FileOutputStream("./test.png");
        f.write(apng.build());
        f.close();
    }

    input:
    output output output output

    output:
    input

  3. import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.*;
    
    import com.librian.lib.APNGSeparator;
    
    void main() throws Exception {        
        FileInputStream stream = new FileInputStream("./test.png");
        APNGSeparator separator = new APNGSeparator(stream);
    
        // #1
        int i = 0;
        for (BufferedImage img : separator.getFrames(true))
            ImageIO.write(img, "PNG", new File(STR."./1_\{++i}.png"));
    
        // #2
        i = 0;
        for (BufferedImage img : separator.getFrames(false)) {
            // Bright border for frame with transparent background.
            var output = new BufferedImage(img.getWidth() + 2, img.getHeight() + 2, BufferedImage.TYPE_INT_ARGB);
            output.getGraphics().drawImage(img, 1, 1, null);
            output.getGraphics().drawRect(0, 0, output.getWidth() - 1, output.getHeight() - 1);
    
            ImageIO.write(output, "PNG", new File(STR."./2_\{++i}.png"));
        }
        stream.close();
    }

    input:
    input
    output:

    1. output <- static image
      output output output output output output output
    2. output <- static image
      output output output output output output
  4. import javax.imageio.ImageIO;
    import java.awt.image.BufferedImage;
    import java.io.*;
    
    import com.librian.lib.APNGSeparator;
    import com.librian.lib.Frame;
    
    void main() throws Exception {
        FileInputStream stream = new FileInputStream("./test.png");
        APNGSeparator separator = new APNGSeparator(stream);
    
        int i = 0;
        for (Frame img : separator.getRawFrames()) {
            // Bright border for frame with transparent background.
            var output = new BufferedImage(
                    img.image.getWidth() + 2,
                    img.image.getHeight() + 2,
                    BufferedImage.TYPE_INT_ARGB);
            output.getGraphics().drawImage(img.image, 1, 1, null);
            output.getGraphics().drawRect(0, 0, output.getWidth() - 1, output.getHeight() - 1);
    
            ImageIO.write(output, "PNG", new File(STR."./\{++i}.png"));
        }
    
        stream.close();
    }

    input:
    input
    output:
    output <- static image
    output output output output output output

About

Java Library for creating and splitting APNG

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages