Luckily, We Already Have
    From our Raster class:
        public final Image toImage(Component root) {
            return root.createImage(new MemoryImageSource(width, height, pixel, 0, width));
        }
    	
    The MemoryImageSource method is an imageProducer (root is an imageObserver).
        public class ppmDecoder {
            Raster imgRaster;	// declare a Raster
    
            public ppmDecoder() { }
            public Image getppmImage(URL url) {
                // open url and read image header
                    .
                    .
                    .
                // create imgRaster
                    .
                    .
                    .
                // copy data from file into imgRaster
                    .
                    .
                    .
                return (imgRaster.toImage());
           }
        }
    	
Lecture 2   Slide 20   6.837 Fall '00