Solved

Image .....from a gif file

Posted on 2004-10-04
15
176 Views
Last Modified: 2013-11-19
Hi Experts,
         
     How do I create an Image from a *.gif file ??? e.g.
   
       Image offscreen = new Image( ??? ("background0.gif"));

   thanks !
0
Comment
Question by:meow00
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 7
  • 6
  • 2
15 Comments
 
LVL 92

Expert Comment

by:objects
ID: 12223741
Image i = new ImageIcon("xyz.gif").getImage();
0
 
LVL 92

Expert Comment

by:objects
ID: 12223750
but if you want to create an offscreen image then you need to create a blank one:

BufferedImage offscreen = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
Graphics g = offscreen.getGraphics();
0
 
LVL 1

Author Comment

by:meow00
ID: 12223897
thanks very much ....

  so for the graphics g ... is it possible to load " *.gif " to it .... or it can only use functions like :
 fillOvals .... fillRect ... drawString ..etc.  ???

  thanks a lot !!!
0
The Ultimate Checklist to Optimize Your Website

Websites are getting bigger and complicated by the day. Video, images, custom fonts are all great for showcasing your product/service. But the price to pay in terms of reduced page load times and ultimately, decreased sales, can lead to some difficult decisions about what to cut.

 
LVL 92

Expert Comment

by:objects
ID: 12223900
yes that is correct
0
 
LVL 1

Author Comment

by:meow00
ID: 12223908
err ..............so .... does it mean I need to paint the offscreen pixel by pixel  ....... by myself ???
0
 
LVL 92

Assisted Solution

by:objects
objects earned 200 total points
ID: 12223913
you do the same painting you are already doing, just instead of painting to the screen you paint to the offscreen image.
Then in your paint() method you just paint the offscreen image to the screen.
0
 
LVL 1

Author Comment

by:meow00
ID: 12223985
Hi,

    Thanks very much ..... so I tried the offscreen in the following code .... but I still got "flash" .... did I make any mistake in the following code ??? please help !!! many thanks !!!

//-------------------------------------------------------------------  
   .... blah blah ....

    ImageIcon headImg = new ImageIcon(getClass().getResource("head.gif"));
    ImageIcon bgImg = new ImageIcon(getClass().getResource("background0.gif"));
   
    BufferedImage offscreen = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB);
    Graphics offscreenG = offscreen.getGraphics();

      .... blah blah ....

  public void update(Graphics g)
    {
        paint(offscreenG);               // call the paint function with offscreen graphics
        g.drawImage(offscreen,0,0,this);    // draw image to screen
    }

   
    public void paint(Graphics offscreenG)
    {
        offscreenG.drawImage( bgImg.getImage(), 0, 0, 420, 420,  null) ;
        offscreenG.drawImage( headImg.getImage(), snake_x[0], snake_y[0], 20, 20, null) ;  
    }
   .... blah blah ......

 
0
 
LVL 7

Expert Comment

by:tomboshell
ID: 12224165
Looking at you code I would think that the actual screen painting occurs when the update method is being executed.  This will not always occur.  I do believe objects stated >> Then in your paint() method you just paint the offscreen image to the screen.

Set the image up in your constructor or initalizer, ie before you ever want to actually display it.  That keeps a ready reference to it, then paint it out upon need.    It may also help to set the container (probably JPanel)  to double buffered since sometimes that is all you need.  
0
 
LVL 1

Author Comment

by:meow00
ID: 12224174
thanks for the info ... but how do I  "Set the image up in your constructor or initalizer" exactly ???
0
 
LVL 92

Expert Comment

by:objects
ID: 12224311
problem could be that you are painting to the frame, I generally subclass JPanel instead of JPanel and have never has any flicker problems.
0
 
LVL 7

Accepted Solution

by:
tomboshell earned 200 total points
ID: 12224342
up there where you have >>.... blah blah ....

That is what I would say, so then you would have it stored.  But see what Objects says...

The paint method will be called from outside your class also, ie when the screen (panel) is getting painted it will call your paint method also.  Then a different graphics object will be sent in (like for the screen or panel), that is where you want to draw your stored image.

Maybe the following will give you some ideas....or not

public class YourBlahClass implements ImageObserver{
// this class can now 'observe' itself
    ImageIcon headImg;
    ImageIcon bgImg;
   
    private int x=0, y=0, width = 0, height = 0; // properties of the combo-image

    BufferedImage offscreen;
    Graphics offscreenG;
    private Graphics summonerGraphics;

  public YourBlahClass(){  //constructor
        headImg  = new ImageIcon(getClass().getResource("head.gif"));
        bgImg  = new ImageIcon(getClass().getResource("background0.gif"));
        offscreen  = new BufferedImage(400, 400, BufferedImage.TYPE_INT_RGB);
        offscreenG  = offscreen.getGraphics();

       offscreenG.drawImage( bgImg.getImage(), 0, 0, 420, 420,  null) ;
       offscreenG.drawImage( headImg.getImage(), snake_x[0], snake_y[0], 20, 20, null) ;
   }

  public boolean imageUpdate(Image img, int infoF, inx x1, int y1, int width1, int height1){
    // store the x,y, width, height for possible later adjustment
     // then call the paint method
     paint(summonerGraphics);  // set the first time this was called.  
  }

 public void paint(Graphics g){  // the graphics object will be coming from whatever wants to show the image...
    g.drawImage(offscreenG, x,y, width, height, this);
    summonerGraphics = g;
 }
}
0
 
LVL 1

Author Comment

by:meow00
ID: 12235908
Hi object, I tried JPanel ... but still got the same problem .....

Hi tomoshell, ... I tried the above method ... but still got flickers .......

still working on it ........
0
 
LVL 92

Expert Comment

by:objects
ID: 12235987
> Hi object, I tried JPanel ... but still got the same problem .....

can you post the code
0
 
LVL 1

Author Comment

by:meow00
ID: 12245664
problem solved ... thanks all !
0
 
LVL 92

Expert Comment

by:objects
ID: 12245676
(:
0

Featured Post

Transaction Monitoring Vs. Real User Monitoring

Synthetic Transaction Monitoring Vs. Real User Monitoring: When To Use Each Approach? In this article, we will discuss two major monitoring approaches: Synthetic Transaction and Real User Monitoring.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this post we will learn how to make Android Gesture Tutorial and give different functionality whenever a user Touch or Scroll android screen.
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
Learn how to use the remote presentation tool in Prezi to allow you to harness the power of this cloud based presentation platform. You can show your presentation with a remote audience using this free tool.
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…

729 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question