Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Resize Animated GIF Image

227 views
Skip to first unread message

D i s h a n

unread,
Feb 13, 2007, 6:12:03 AM2/13/07
to
Hi Experts,

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

Thanks in advance

DF

bugbear

unread,
Feb 13, 2007, 6:37:11 AM2/13/07
to
D i s h a n wrote:
> 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

Andrew Thompson

unread,
Feb 13, 2007, 7:23:48 AM2/13/07
to
On Feb 13, 10:12 pm, "D i s h a n" <dis...@gmail.com> wrote:
...

> 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 i s h a n

unread,
Feb 21, 2007, 12:37:59 AM2/21/07
to
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();
}
}
}


Andrew Thompson

unread,
Feb 21, 2007, 6:08:41 AM2/21/07
to
On Feb 21, 4:37 pm, "D i s h a n" <dis...@gmail.com> wrote:
> 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.

D i s h a n

unread,
Feb 21, 2007, 10:37:52 PM2/21/07
to
Its in my current package folder.

Andrew Thompson

unread,
Feb 22, 2007, 8:12:15 AM2/22/07
to
On Feb 22, 2:37 pm, "D i s h a n" <dis...@gmail.com> wrote:
> 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.

Gordon Beaton

unread,
Feb 22, 2007, 8:26:52 AM2/22/07
to
On 20 Feb 2007 21:37:59 -0800, D i s h a n wrote:
> 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

--
[ don't email me support questions or followups ]
g o r d o n + n e w s @ b a l d e r 1 3 . s e

Lars Enderin

unread,
Feb 22, 2007, 8:30:59 AM2/22/07
to
Andrew Thompson skrev:

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.

0 new messages