01 import java.awt.*; 
02 import java.awt.image.*; 
03 import java.io.*; 
04 import javax.servlet.*; 
05 import javax.servlet.http.*; 
06 
07 import Acme.JPM.Encoders.*; 
08 
09 public class GreyScaleServlet extends HttpServlet 
10 
11   public void doGet (HttpServletRequest req, HttpServletResponse res
12                                  throws ServletException, IOException 
13     res.setContentType("image/gif")
14     ServletOutputStream out = res.getOutputStream()
15 
16     // získame info o umiestnení obrázku 
17     String source = req.getPathTranslated()
18     if (source == null) { 
19      throw new ServletException("Chyba v umiestnení obrázku")
20     
21 
22     /* vytvoríme viacnásobne použiteľný frame, pričom 
23     tentokrát nepotrebujeme volať metódu addNotify() */ 
24     Frame frame = new Frame();
25     
26     // natiahneme obrázok do pamäte 
27     Image image = Toolkit.getDefaultToolkit().getImage(source)
28     MediaTracker mt = new MediaTracker(frame)
29     mt.addImage(image, 0)
30     try 
31      mt.waitForAll()
32     
33     catch (InterruptedException e) { 
34      getServletContext().log("Chyba pri načítaní obrázka", e)
35      throw new ServletException(e.getMessage())
36     
37 
38     // zistíme rozmery obrázku 
39     int width = image.getWidth(frame)
40     int height = image.getHeight(frame)
41   
42     // obrázok preženieme cez filter 
43     Image filtered = frame.createImage(new FilteredImageSource(image.getSource(),new GreyScaleFilter()))
44 
45     // obrázok zakódujeme a pošleme 
46     GifEncoder encoder = new GifEncoder(filtered, out)
47     encoder.encode()
48   
49