A Servlet to crop an image
Tuesday, January 8, 2008 6:59:11 PM
I needed a servlet to crop an image passing the parameters by querystring.
After reading a few forums, here is the result.
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();
}
}






