Solved

Image .....from a gif file

Posted on 2004-10-04
15
173 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
  • 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
Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

 
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

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
arguments to jar 5 35
jboss wildfly 10.1 10 228
jsp error 6 25
Running JavaFX on the Raspberry Pi 27 40
Go is an acronym of golang, is a programming language developed Google in 2007. Go is a new language that is mostly in the C family, with significant input from Pascal/Modula/Oberon family. Hence Go arisen as low-level language with fast compilation…
Java functions are among the best things for programmers to work with as Java sites can be very easy to read and prepare. Java especially simplifies many processes in the coding industry as it helps integrate many forms of technology and different d…
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.
It’s easy to embed any of your public Prezi presentations on your website or social network to share with others. Learn how simple it is in this tutorial.

856 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