Как мне написать сервлет, который вращает изображения? - PullRequest
0 голосов
/ 09 июня 2011

Привет, просто хотел поделиться этим сервлетом, он принимает 2 аргумента (img-> имя изображения, гниль -> вращение изображений) загружает изображение из каталога изображений, поворачивает его и выводит его в поток сервлета

Вы можете найти его в ответе ниже

1 Ответ

2 голосов
/ 09 июня 2011



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);
    }

}



...