import java.awt.Color; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.image.BufferedImage; import java.io.IOException; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; // Image scaling :http://helpdesk.objects.com.au/java/how-do-i-scale-a-bufferedimage public class ImageServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { final int width = 400; final int height = 400; BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D gfx = bufferedImage.createGraphics(); gfx.setColor( Color.white ); gfx.fillRect(0, 0, width, height); //Graphics2D has many various drawing methods gfx.setColor( Color.blue ); gfx.fillOval(10, 10, width-20, height-20); gfx.dispose(); //dispose when we are done with drawing //Downscale image to create a smoother looking one BufferedImage smallImage = new BufferedImage(width/2, height/2, BufferedImage.TYPE_INT_RGB); gfx = smallImage.createGraphics(); gfx.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC); gfx.drawImage(bufferedImage, 0, 0, width/2, height/2, null); gfx.dispose(); response.setContentType("image/png"); ImageIO.write(smallImage, "png", response.getOutputStream() ); // use imageio.read to load a file to a bufferedimage } }