2011-06-09 27 views

回答

2
 



package at.buchinger.mapdisplay; 

import java.awt.geom.AffineTransform; 
import java.awt.image.AffineTransformOp; 
import java.awt.image.BufferedImage; 
import java.io.File; 
import java.io.IOException; 
import java.util.Iterator; 

import javax.imageio.ImageIO; 
import javax.imageio.ImageWriter; 
import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 
import javax.servlet.ServletOutputStream; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* Servlet implementation class RotatedImage 
*/ 
public class RotatedImage extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    /** 
    * @see HttpServlet#HttpServlet() 
    */ 
    public RotatedImage() { 
     super(); 
     // TODO Auto-generated constructor stub 
    } 

    /** 
    * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     String img = (String) request.getParameter("img"); 
     String path = getServletContext().getRealPath("image/"+img); 


     String r; 
     r=request.getParameter("rot"); 
     if(r==null){ 
      r="0"; 
     } 
     double rot = Double.parseDouble(r); 

     BufferedImage image = ImageIO.read(new File(path)); 
     AffineTransform tx = new AffineTransform(); 

     tx.rotate(Math.toRadians(rot), image.getWidth()/2, image.getHeight()/2); 

     AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR); 
     image = op.filter(image, null); 



      ServletContext sc = getServletContext(); 
      String filename = getServletContext().getRealPath(path); 

      // Get the MIME type of the image 
      String mimeType = sc.getMimeType(filename); 
      if (mimeType == null) { 
       sc.log("Could not get MIME type of "+filename); 
       response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR); 
       return; 
      } 


      // Set content type 
      response.setContentType(mimeType); 
      ServletOutputStream out = response.getOutputStream(); 
      Iterator iter = ImageIO.getImageWritersByMIMEType(mimeType); 

      ImageIO.write(image, "png", out); 

    } 

    /** 
    * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
    */ 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     doGet(request, response); 
    } 

}