RECHERCHE

Plan du site

BOURSE

 

RUBRIQUES

 
 RESSOURCES 
 
Créer des images JPEG avec un servlet
Sous licence GPL 16 juillet 2001
 
 


Ce servlet Java permet de créer des images en les encodant au format JPEG.

// JPEGenerator.java
// version 1.0 Björn Nilsson, june 2000
// version 1.1 Gustavo Muñoz, nov 2000
// jalajala@mail.ru

// Servlet Classes
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;

// JPEG Codec Classes
import com.sun.image.codec.jpeg.JPEGCodec;
import com.sun.image.codec.jpeg.JPEGImageEncoder;

// Graphics and Image Classes
import java.awt.image.BufferedImage;
import java.awt.Graphics2D;

// IO Classes
import java.io.IOException;

// Servlet that returns a JPEG to the Client
public class JPEGenerator extends HttpServlet {

 // Handle HTTP GET
 public void doGet(HttpServletRequest req,
                   HttpServletResponse res) throws ServletException, IOException {
  int ImageWidth = 300, ImageHeight = 200, shapeRadius, startAngle, stopAngle;
  // Convert The Radius Parameter to an int
  try {
   this.shapeRadius = new Integer(req.getParameter("radius")).intValue();
   this.startAngle = new Integer(req.getParameter("start")).intValue();
   this.stopAngle = new Integer(req.getParameter("stop")).intValue();
  }
  catch (NumberFormatException exc){
   this.shapeRadius = 0;
   this.startAngle = 0;
   this.stopAngle = 360;
  }

  // Create a JPEG Encoder
  JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(res.getOutputStream());

  // Create a Buffered Image
  BufferedImage img = new BufferedImage(this.ImageWidth, this.ImageHeight,
                                        BufferedImage.TYPE_INT_RGB);

  // Create a Graphics Object from the Buffered Image
  Graphics2D graphics = img.createGraphics();

  // Draw to The Circle
  graphics.drawArc(this.ImageWidth/2-shapeRadius, this.ImageHeight/2-shapeRadius,
                   this.shapeRadius*2, this.shapeRadius*2, this.startAngle, 
                   this.stopAngle-this.startAngle);

  // Set MIME type and header
  res.setContentType("image/jpeg");
  res.setHeader("Content-disposition", "inline; filename=circle.jpg");

  // Encode The Image and Write it to The Client
  encoder.encode(img);
 }
}
 
Accueil | Haut de page