Kig på
http://www.acme.com/ de har lavet moduler til at kunne gemme .gif med.
For at kunne lave et grafik billede allokerer du et Image i hukommelsen, og tegner i det.
Dette Image gemmer du så som .gif på HD\'en og henter fra din jsp side.
p.s. Om det lige er et Image kan jeg ikke huske (lang tid sinde jeg brugte det :-)
Her er et eksempel på en Counter som bliver brugt på et større homepage hotel idag. Jeg har fjernet nogle database ting, men doGet() skulle vise hvad man gør, i din jsp side kalder du bare denne servlet som var det et image, og den returnere så et genereret .gif billede af en counter.
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import Acme.JPM.Encoders.GifEncoder;
public class counter extends HttpServlet
{
private final String path=\"/www/gfx/digits/\";
private final String defaultStyle=\"0\";
private fontgrabber fg = null;
private fontinfo fi = null;
private GifEncoder gifEncoder = null;
/** Holds value of property counter. */
private int counter;
/**
* Service
* Handles GET request-response
* @param HttpServletRequest, HttpServletResponse
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
response.setContentType(\"image/gif\");
//make sure that the GIF pictures is not being cached by browser or proxy server
response.setDateHeader(\"Expires\", 0);
response.setHeader(\"Pragma\", \"no-cache\");
if (request.getProtocol().equals(\"HTTP/1.1\"))
{
response.setHeader(\"Cache-Control\", \"no-cache\");
}
//get the outputStream from the response object
ServletOutputStream out=response.getOutputStream();
//get querystring information
tal=12345; //counter værdi
if (readBitmap(path+style+\".ffi\"))
{
//Transparent => color < 0x08000000
fg = new fontgrabber(fi, tal, 0x07000000);
gifEncoder=new GifEncoder(fg.getImageProd(),out);
gifEncoder.encode();
}
}
/**
* Reads Bitmap and font descriptor.
*/
private boolean readBitmap(String fn)
{
/*-- Load font descriptor --*/
FileInputStream fis = null;
ObjectInputStream ois = null;
try
{
fis = new FileInputStream(fn);
ois = new ObjectInputStream(fis);
fi = (fontinfo)ois.readObject();
ois.close();
fis.close();
}
catch (Exception e)
{
e.printStackTrace(System.out);
return false;
}
return true;
}
/** Getter for property counter.
* @return Value of property counter.
*/
public int getCounter()
{
return counter;
}
/** Setter for property counter.
* @param counter New value of property counter.
*/
public void setCounter(int counter)
{
this.counter = counter;
}
}