Skip to content

Commit 65c7c30

Browse files
committed
R move method to GifSequenceWriter
1 parent 28f23a6 commit 65c7c30

File tree

3 files changed

+48
-69
lines changed

3 files changed

+48
-69
lines changed

approvaltests-tests/src/test/java/org/approvaltests/awt/ApprovalsTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package org.approvaltests.awt;
22

3+
import com.spun.util.Tuple;
4+
import java.time.Duration;
35
import org.approvaltests.core.Options;
46
import org.approvaltests.reporters.*;
57
import org.junit.jupiter.api.Disabled;
@@ -39,5 +41,7 @@ void testSequence()
3941
{
4042
SquareDrawer squareDrawer = new SquareDrawer();
4143
AwtApprovals.verifySequence(5, f -> squareDrawer.setSquareSize(f * 10));
44+
// AwtApprovals.verifySequence(5, Duration.ofMillis(500), f -> squareDrawer.setSquareSize(f * 10));
45+
// AwtApprovals.verifySequence(5, f -> new Tuple(squareDrawer.setSquareSize(f * 10), Duration.ofMillis(500));
4246
}
4347
}

approvaltests/src/main/java/org/approvaltests/awt/GifSequenceWriter.java

Lines changed: 37 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,26 @@
88
// License. To view a copy of this license, visit
99
// http://creativecommons.org/licenses/by/3.0/ or send a letter to Creative
1010
// Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
11-
import javax.imageio.*;
12-
import javax.imageio.metadata.*;
13-
import javax.imageio.stream.*;
14-
import java.awt.image.*;
15-
import java.io.*;
11+
import java.awt.image.BufferedImage;
12+
import java.awt.image.RenderedImage;
13+
import java.io.File;
14+
import java.io.IOException;
15+
import java.util.ArrayList;
1616
import java.util.Iterator;
1717

18+
import javax.imageio.IIOException;
19+
import javax.imageio.IIOImage;
20+
import javax.imageio.ImageIO;
21+
import javax.imageio.ImageTypeSpecifier;
22+
import javax.imageio.ImageWriteParam;
23+
import javax.imageio.ImageWriter;
24+
import javax.imageio.metadata.IIOMetadata;
25+
import javax.imageio.metadata.IIOMetadataNode;
26+
import javax.imageio.stream.FileImageOutputStream;
27+
import javax.imageio.stream.ImageOutputStream;
28+
29+
import com.spun.util.ObjectUtils;
30+
1831
public class GifSequenceWriter implements AutoCloseable
1932
{
2033
protected ImageWriter gifWriter;
@@ -60,6 +73,25 @@ public GifSequenceWriter(ImageOutputStream outputStream, int imageType, int time
6073
gifWriter.setOutput(outputStream);
6174
gifWriter.prepareWriteSequence(null);
6275
}
76+
static File writeAnimatedGif(File imageFile, ArrayList<BufferedImage> images, int timeBetweenFramesMS)
77+
{
78+
try (ImageOutputStream output = new FileImageOutputStream(imageFile))
79+
{
80+
try (GifSequenceWriter writer = new GifSequenceWriter(output, images.get(0).getType(), timeBetweenFramesMS,
81+
true))
82+
{
83+
for (BufferedImage image : images)
84+
{
85+
writer.writeToSequence(image);
86+
}
87+
}
88+
}
89+
catch (Exception e)
90+
{
91+
throw ObjectUtils.throwAsError(e);
92+
}
93+
return imageFile;
94+
}
6395
public void writeToSequence(RenderedImage img) throws IOException
6496
{
6597
gifWriter.writeToSequence(new IIOImage(img, null, imageMetaData), imageWriteParam);
@@ -112,37 +144,4 @@ private static IIOMetadataNode getNode(IIOMetadataNode rootNode, String nodeName
112144
rootNode.appendChild(node);
113145
return (node);
114146
}
115-
/**
116-
public GifSequenceWriter(
117-
BufferedOutputStream outputStream,
118-
int imageType,
119-
int timeBetweenFramesMS,
120-
boolean loopContinuously) {
121-
*/
122-
public static void main(String[] args) throws Exception
123-
{
124-
if (args.length > 1)
125-
{
126-
// grab the output image type from the first image in the sequence
127-
BufferedImage firstImage = ImageIO.read(new File(args[0]));
128-
// create a new BufferedOutputStream with the last argument
129-
ImageOutputStream output = new FileImageOutputStream(new File(args[args.length - 1]));
130-
// create a gif sequence with the type of the first image, 1 second
131-
// between frames, which loops continuously
132-
GifSequenceWriter writer = new GifSequenceWriter(output, firstImage.getType(), 1, false);
133-
// write out the first image to our sequence...
134-
writer.writeToSequence(firstImage);
135-
for (int i = 1; i < args.length - 1; i++)
136-
{
137-
BufferedImage nextImage = ImageIO.read(new File(args[i]));
138-
writer.writeToSequence(nextImage);
139-
}
140-
writer.close();
141-
output.close();
142-
}
143-
else
144-
{
145-
System.out.println("Usage: java GifSequenceWriter [list of gif files] [output file]");
146-
}
147-
}
148147
}
Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,14 @@
11
package org.approvaltests.awt;
22

3-
import com.spun.swing.Paintable;
4-
import com.spun.util.ObjectUtils;
5-
import com.spun.util.persistence.ExecutableQuery;
6-
import org.approvaltests.approvers.ApprovalApprover;
3+
import java.awt.image.BufferedImage;
4+
import java.io.File;
5+
import java.util.ArrayList;
6+
77
import org.approvaltests.core.ApprovalWriter;
88
import org.approvaltests.writers.PaintableApprovalWriter;
99
import org.lambda.functions.Function1;
1010

11-
import javax.imageio.stream.FileImageOutputStream;
12-
import javax.imageio.stream.ImageOutputStream;
13-
import java.awt.image.BufferedImage;
14-
import java.io.File;
15-
import java.sql.ResultSet;
16-
import java.util.ArrayList;
17-
import java.util.Map;
11+
import com.spun.swing.Paintable;
1812

1913
public class PaintableMultiframeWriter implements ApprovalWriter
2014
{
@@ -28,25 +22,7 @@ public PaintableMultiframeWriter(int numberOfFrames, Function1<Integer, Paintabl
2822
@Override
2923
public File writeReceivedFile(File received)
3024
{
31-
try
32-
{
33-
ArrayList<BufferedImage> images = getBufferedImages();
34-
try (ImageOutputStream output = new FileImageOutputStream(received))
35-
{
36-
try (GifSequenceWriter writer = new GifSequenceWriter(output, images.get(0).getType(), 500, true))
37-
{
38-
for (BufferedImage image : images)
39-
{
40-
writer.writeToSequence(image);
41-
}
42-
}
43-
}
44-
return received;
45-
}
46-
catch (Exception e)
47-
{
48-
throw ObjectUtils.throwAsError(e);
49-
}
25+
return GifSequenceWriter.writeAnimatedGif(received, getBufferedImages(), 500);
5026
}
5127
private ArrayList<BufferedImage> getBufferedImages()
5228
{
@@ -63,4 +39,4 @@ public String getFileExtensionWithDot()
6339
{
6440
return ".gif";
6541
}
66-
}
42+
}

0 commit comments

Comments
 (0)