My Opera is closing 3rd of March

mateamargo

el mate dulce no es mate

Subscribe to RSS feed

A Servlet to crop an image

, , , ...

I needed a servlet to crop an image passing the parameters by querystring.
After reading a few forums, here is the result.

import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;

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

public class ImageCropperServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;
    
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        
        int top = Integer.valueOf(req.getParameter("t")).intValue();
        int left = Integer.valueOf(req.getParameter("l")).intValue();
        int width = Integer.valueOf(req.getParameter("w")).intValue();
        int height = Integer.valueOf(req.getParameter("h")).intValue();
        String imagePath = getServletContext().getRealPath("") + System.getProperty("file.separator")  + req.getParameter("i");
        
        BufferedImage outImage = ImageIO.read(new File(imagePath));
        BufferedImage cropped = outImage.getSubimage(left, top, width, height);
        
        ByteArrayOutputStream croppedOut = new ByteArrayOutputStream();
        ImageIO.write(cropped, req.getParameter("f"), croppedOut);
        
        resp.setContentType("image/" + (req.getParameter("f").equals("jpg") ? "jpeg": req.getParameter("f")));
        
        ServletOutputStream out = resp.getOutputStream();
        out.write(croppedOut.toByteArray());
        out.flush();
        out.close();
    }
}