Listing 1: Extracting a raster from an Image object.


Listing-ul RasterFromImage.java

import java.awt.*;
import java.awt.image.*;

class ExtractingRaster extends Frame{

Image IMG=null;  
// the image from witch the raster will be extracted
BufferedImage BI=null; 
// the BufferedImage used for drawing raster on screen
int pixels[];   
//the pixels obtain from the PixelGrabber.grabPixels method
int W,H;  
// the width(W) and the height(H) of the image

    public ExtractingRaster(String title)
           {
           super(title);
           }

    void init()
           {       
           setLayout(null);
           setSize(400,150);  
           setVisible(true);
           }           
           
    void extracting()
           { 
           //loading the image
           Toolkit tk=Toolkit.getDefaultToolkit();
           IMG=tk.getImage("C:\\JEditor\\x\\raptor.jpg");
           MediaTracker mt = new MediaTracker(this);
           mt.addImage(IMG,1);
           try {
                 mt.waitForAll();
                 }catch (InterruptedException e) 
                            {System.out.println(e.getMessage());};
                            
           //getting a portion from the image 
           //the raster dimensions will be (0,0,W,H)         
           W=IMG.getWidth(this)/3;
           H=IMG.getHeight(this)/3;
           
           //extracting the image pixels
           pixels=new int[W*H];
           PixelGrabber PG=new PixelGrabber(IMG,0,0,W,H,pixels,0,W);
           
           try{
               PG.grabPixels();
               }catch(InterruptedException e)
                       {System.out.println(e.getMessage());}
                     
           //DataBuffer
           DataBufferInt DB=new DataBufferInt(pixels,(W*H),0);
                  
           //SampleModel
          int[] BM=new int[]{0xff0000,0xff00,0xff,0xff000000};
          SinglePixelPackedSampleModel SM=new    
          SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,W,H,BM);                      
          
           //creating the raster
           Point P=new Point(0,0);      
           WritableRaster R=Raster.createWritableRaster(SM,DB,P); 
		   //in this case, P can be replace with null
           
           //convert the raster to a BufferedImage 
          BI=new BufferedImage(PG.getColorModel(),R,false,null);         
           }
            
       public void paint(Graphics g)
       {
       //drawing the original image
       g.drawImage(IMG,20,20,this);
       //drawing the raster
       g.drawImage(BI,300,30,this);              
       }                 
  }

public class RasterFromImage{
       public static void main(String[] args)
              {
              ExtractingRaster t=new ExtractingRaster("Raptor");
              t.extracting();
              t.init();
              }
}        

How to Add Java Applets to Your Site

New on the Java Boutique:

New Review:

Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling API boasts simplicity, ease-of-integration, a well-rounded feature set, and it's free!

New Applet:

Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA sequences into three useful formats.

Elsewhere on internet.com:

WebDeveloper Java
Lots of Java information on webdeveloper.com

WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.

ScriptSearch Java
Hundreds of free Java code files to download.

jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.