Java Servlet Programing Laungage

Java Servlet Projects

Servlet Project 3

adplus-dvertising
Create an application for cropping an image in custom rectangular region
Previous Home Next

In this Generic Servlet program, an image is cropped in custom rectangular region and then,a RGBImageFilter(image filter) is used to convert image property like color. Image must be encored into gif format before sending response to client. Used this jar file into program for encore image into GIF format.

Acme.JPM.Encoders.GifEncoder (here)

Servlet directory structure

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <servlet>
    <servlet-name>CropImageFilterServlet</servlet-name>
    <servlet-class>r4r.GenericServlet.CropImageFilterServlet</servlet-class>
  </servlet>
  <servlet-mapping>
     <servlet-name>CropImageFilterServlet</servlet-name>
     <url-pattern>/CropImageFilterServlet</url-pattern>
  </servlet-mapping>
  <session-config>
        <session-timeout>
            30
        </session-timeout>
  </session-config>
</web-app>

index.jsp

<%-- 
 Document: index.jsp
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <title>r4r.co.in-GenericServlet</title>
 </head>
 <body>
  <form>
   <h1>Access GenericServlet by servlet's Name!</h1>
   <a href="CropImageFilterServlet">CropImageFilterServlet</a>
  </form>
 </body>
</html>

Servlet Program

/*
 * Save as a CropImageFilterServlet.java
 */
package r4r.GenericServlet;
import java.awt.*;
import java.awt.image.*;
import java.io.IOException;
import java.util.logging.*;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import Acme.JPM.Encoders.GifEncoder;
/**
 *
 * @author R4R
 */
public class CropImageFilterServlet extends GenericServlet {

 Frame frame = new Frame();

 @Override
 public void service(ServletRequest req,
	 ServletResponse res) throws ServletException, IOException 
 {
  res.setContentType("image/gif"); // response send to client browser
  ServletOutputStream out = res.getOutputStream();

  // Get resource full path
  String imagePath = getServletContext().getRealPath("javalogo1.gif");
  try {
//check resource availability
if (imagePath == null || imagePath.startsWith("image")) {
out.println(HttpServletResponse.SC_NOT_ACCEPTABLE +
	    "Reading content type must be \"image(jpg/gif)/*\"");
}

//Creates an image with the specified image resource.
Image image = Toolkit.getDefaultToolkit().createImage(imagePath);
//Track image status 
MediaTracker mt = new MediaTracker(frame); //frame acts as ImageObserver
mt.addImage(image, 0);
mt.waitForAll(); //Load all image

//Get image property
int heigth = image.getHeight(frame);
int width = image.getWidth(frame);
//Make sure reading Image is valid
if (heigth <= 0 || width <= 0) {
 out.println(HttpServletResponse.SC_NO_CONTENT + "Not a valid image");
}

//Applying filter on image and cropping an image in rectangular region
ImageFilter copeFilter = new CropImageFilter(50, 100, width/3 , heigth/3);
//Construct a Off-screen Image and match this image from imagefilter object
Image img = frame.createImage
	         (new FilteredImageSource(image.getSource(), copeFilter));
//Encode the off-screen image into GIF format
GifEncoder encoder = new GifEncoder(img, out);
encoder.encode();
  } catch (InterruptedException ex) {
Logger.getLogger(CropImageFilterServlet.class.getName()).log(Level.SEVERE,
  "InterruptedException generate while reading image:", ex);
  } finally {
//Free resource
frame.dispose();
out.flush();
out.close();
  }
 }
}
Output of Program
Previous Home Next