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();
}
}
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.
|