Resize Animated GIF Image

D

D i s h a n

Hi Experts,

Is there anyway to resize animated gif image using java tech.

Thanks in advance

DF
 
B

bugbear

D said:
Hi Experts,

Is there anyway to resize animated gif image using java tech.

I don't know a direct answer.

I think java can do 2D zooming, so the answer would
be "yes" if you can get the induividual frames
our, zoom, and ressemble.

As a side FYI, I think ImageMagick can do it in one hit.

BugBear
 
A

Andrew Thompson

Is there anyway to resize animated gif image using java tech.

Is that a question? Note that adding '?'
helps the reader to identify the question,
and you would want to *help* people, to
help you, no?

In any case..

Sure. Bugbear probably identified the
robust and correct approach, so I'll
just jump in with another that is quick
and (very) hackish.

<sscce>
import javax.swing.*;
import java.io.File;
import java.net.URL;

/**
Swing components can parse simple HTML like..

<html>
<body bgcolor='black'>
<img src='./plnttm.gif' width='150' height='150' ><br>
<img src='./plnttm.gif' width='300' height='300' >
</body>
</html>

'pntthmb.gif is an animated GIF in the same
directory as the HTML.
*/
class ResizeableAnimatedImage extends JPanel {

public static void main(String[] args) throws Exception {
JEditorPane jep = new JEditorPane();
File file = new File( ".","images.html" );
URL url = file.toURI().toURL();
jep.setPage(url);

JOptionPane.
showMessageDialog( null, jep );
}
}
</sscce>

HTH

Andrew T.
 
D

D i s h a n

This is the code now im using for animated gif resizing.
But the thing is this will not work in my debian enviroment.
I set DISPLAY veriable as 'export DISPLAY=:1.0' than it works in
console application. but not in Tomcat enviroment.
* How can I set DISPLAY in Tomcat5?
* Can anybody point me to right direction on this issue?
Thanks in advance

package test.image;
/**
* @@author Dishan Fernando
*
*/

import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class CGif {

String srcFileName = null;
String dstFileName = null;
FileOutputStream fileOutputStream = null;


public CGif(String srcFileName, String dstFileName) throws
FileNotFoundException{

this.srcFileName = srcFileName;
this.dstFileName = dstFileName;

this.fileOutputStream = new FileOutputStream(dstFileName);

}


public void saveAsFormattedGif(int width, int height) throws
IOException{

GifDecoder gifDecoder = new GifDecoder();
AnimatedGifEncoder animatedGifEncoder = new AnimatedGifEncoder();

gifDecoder.read(this.srcFileName);

int frameCount = gifDecoder.getFrameCount();
int loopCount = gifDecoder.getLoopCount();
animatedGifEncoder.setRepeat(loopCount);
animatedGifEncoder.start(fileOutputStream);

for (int frameNumber = 0; frameNumber < frameCount; frameNumber++) {

BufferedImage frame = gifDecoder.getFrame(frameNumber); // frame
i
int delay = gifDecoder.getDelay(frameNumber); // display
duration of frame in milliseconds
animatedGifEncoder.setDelay(delay); // frame delay per sec
animatedGifEncoder.addFrame( CUtil.resizeToMaxAndCrop(frame,
width, height) );
}

animatedGifEncoder.finish();

fileOutputStream.flush();
fileOutputStream.close();
}

public static void main(String[] args) {
try {
CGif gif = new CGif("E:\\10512Decorations_400x400.gif", "E:\
\128x128.gif");
gif.saveAsFormattedGif(128, 128);

System.out.println("done!");

} catch (Exception e) {
e.printStackTrace();
}
}
}
 
A

Andrew Thompson

This is the code now im using for animated gif resizing.
But the thing is this will not work in my debian enviroment. ....

import java.awt.image.BufferedImage;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; ....
GifDecoder gifDecoder = new GifDecoder();
AnimatedGifEncoder animatedGifEncoder = new AnimatedGifEncoder();
....

Where are the imports for these classes?
It seems (from vague memory) you are now
using the library made by Kevin Weiner to
decode/encode the GIF's, but I cannot see
where they are imported to the code.

Andrew T.
 
A

Andrew Thompson

Its in my current package folder.

I looked at the code more closely thatn your
other words. What is 'export DISPLAY=:1.0'?
I do not see it referenced anywhere else in
the code.

If it is a screen ratio, there may be a problem
because the code is working in a 'headless' or
non GUI'd environment in tomcat.

Andrew T.
 
G

Gordon Beaton

This is the code now im using for animated gif resizing.
But the thing is this will not work in my debian enviroment.
I set DISPLAY veriable as 'export DISPLAY=:1.0' than it works in
console application. but not in Tomcat enviroment.
* How can I set DISPLAY in Tomcat5?
* Can anybody point me to right direction on this issue?

If Tomcat runs as a daemon or under control of a web server, then
setting DISPLAY or even assuming there is a display is not the right
approach.

There are a number of reasons why system daemons should not attempt to
connect to a display or even assume the existence of one.

Have you tried setting -Djava.awt.headless=true?

/gordon
 
L

Lars Enderin

Andrew Thompson skrev:
I looked at the code more closely thatn your
other words. What is 'export DISPLAY=:1.0'?
I do not see it referenced anywhere else in
the code.

If it is a screen ratio, there may be a problem
because the code is working in a 'headless' or
non GUI'd environment in tomcat.

DISPLAY is an environment variable used in Unix/Linux to tell the X
Windows system where (on which physical/logical screen) output should be
displayed. Tomcat should not interact with X Windows.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,007
Latest member
obedient dusk

Latest Threads

Top