Java by API/java.awt.image/PixelGrabber

Материал из Java эксперт
Перейти к: навигация, поиск

new PixelGrabber(Image img, int x, int y, int w, int h, int[] pix, int off, int scansize)

   <source lang="java">

// This example is from the book _Java AWT Reference_ by John Zukowski. // Written by John Zukowski. Copyright (c) 1997 O"Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; import java.awt.image.ImageObserver; import java.awt.image.MemoryImageSource; import java.awt.image.PixelGrabber; public class MainClass extends Applet {

 Image i, j, k, l;
 public void init() {
   MediaTracker mt = new MediaTracker(this);
   i = getImage(getDocumentBase(), "ora-icon.gif");
   mt.addImage(i, 0);
   try {
     mt.waitForAll();
     int width = i.getWidth(this);
     int height = i.getHeight(this);
     int pixels[] = new int[width * height];
     PixelGrabber pg = new PixelGrabber(i, 0, 0, width, height, pixels, 0, width);
     if (pg.grabPixels() && ((pg.status() & ImageObserver.ALLBITS) != 0)) {
       j = createImage(new MemoryImageSource(width, height, rowFlipPixels(pixels, width, height),
           0, width));
       k = createImage(new MemoryImageSource(width, height, colFlipPixels(pixels, width, height),
           0, width));
       l = createImage(new MemoryImageSource(height, width, rot90Pixels(pixels, width, height), 0,
           height));
     }
   } catch (InterruptedException e) {
     e.printStackTrace();
   }
 }
 public void paint(Graphics g) {
   g.drawImage(i, 10, 10, this); // regular
   if (j != null)
     g.drawImage(j, 150, 10, this); // rowFlip
   if (k != null)
     g.drawImage(k, 10, 60, this); // colFlip
   if (l != null)
     g.drawImage(l, 150, 60, this); // rot90
 }
 private int[] rowFlipPixels(int pixels[], int width, int height) {
   int newPixels[] = null;
   if ((width * height) == pixels.length) {
     newPixels = new int[width * height];
     int newIndex = 0;
     for (int y = height - 1; y >= 0; y--)
       for (int x = width - 1; x >= 0; x--)
         newPixels[newIndex++] = pixels[y * width + x];
   }
   return newPixels;
 }
 private int[] colFlipPixels(int pixels[], int width, int height) {
   int newPixels[] = null;
   if ((width * height) == pixels.length) {
     newPixels = new int[width * height];
     int newIndex = 0;
     for (int y = 0; y < height; y++)
       for (int x = width - 1; x >= 0; x--)
         newPixels[newIndex++] = pixels[y * width + x];
   }
   return newPixels;
 }
 private int[] rot90Pixels(int pixels[], int width, int height) {
   int newPixels[] = null;
   if ((width * height) == pixels.length) {
     newPixels = new int[width * height];
     int newIndex = 0;
     for (int x = width - 1; x >= 0; x--)
       for (int y = 0; y < height; y++)
         newPixels[newIndex++] = pixels[y * width + x];
   }
   return newPixels;
 }

}

      </source>
   
  
 
  



PixelGrabber: getColorModel()

   <source lang="java">

// This example is from the book _Java AWT Reference_ by John Zukowski. // Written by John Zukowski. Copyright (c) 1997 O"Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or import java.applet.Applet; import java.awt.AWTEvent; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.image.PixelGrabber; public class MainClass extends Applet {

 Image i;
 PixelGrabber pg;
 public void init() {
   i = getImage(getDocumentBase(), "ora-icon.gif");
   pg = new PixelGrabber(i, 0, 0, -1, -1, false);
   pg.startGrabbing();
   enableEvents(AWTEvent.MOUSE_EVENT_MASK);
 }
 public void paint(Graphics g) {
   g.drawImage(i, 10, 10, this);
 }
 protected void processMouseEvent(MouseEvent e) {
   if (e.getID() == MouseEvent.MOUSE_CLICKED) {
     System.out.println("Status: " + pg.getStatus());
     System.out.println("Width:  " + pg.getWidth());
     System.out.println("Height: " + pg.getHeight());
     System.out.println("Pixels: " + (pg.getPixels() instanceof byte[] ? "bytes" : "ints"));
     System.out.println("Model:  " + pg.getColorModel());
   }
   super.processMouseEvent(e);
 }

}

      </source>
   
  
 
  



PixelGrabber: getHeight()

   <source lang="java">

// This example is from the book _Java AWT Reference_ by John Zukowski. // Written by John Zukowski. Copyright (c) 1997 O"Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or import java.applet.Applet; import java.awt.AWTEvent; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.image.PixelGrabber; public class MainClass extends Applet {

 Image i;
 PixelGrabber pg;
 public void init() {
   i = getImage(getDocumentBase(), "ora-icon.gif");
   pg = new PixelGrabber(i, 0, 0, -1, -1, false);
   pg.startGrabbing();
   enableEvents(AWTEvent.MOUSE_EVENT_MASK);
 }
 public void paint(Graphics g) {
   g.drawImage(i, 10, 10, this);
 }
 protected void processMouseEvent(MouseEvent e) {
   if (e.getID() == MouseEvent.MOUSE_CLICKED) {
     System.out.println("Status: " + pg.getStatus());
     System.out.println("Width:  " + pg.getWidth());
     System.out.println("Height: " + pg.getHeight());
     System.out.println("Pixels: " + (pg.getPixels() instanceof byte[] ? "bytes" : "ints"));
     System.out.println("Model:  " + pg.getColorModel());
   }
   super.processMouseEvent(e);
 }

}

      </source>
   
  
 
  



PixelGrabber: getPixels()

   <source lang="java">

// This example is from the book _Java AWT Reference_ by John Zukowski. // Written by John Zukowski. Copyright (c) 1997 O"Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or import java.applet.Applet; import java.awt.AWTEvent; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.image.PixelGrabber; public class MainClass extends Applet {

 Image i;
 PixelGrabber pg;
 public void init() {
   i = getImage(getDocumentBase(), "ora-icon.gif");
   pg = new PixelGrabber(i, 0, 0, -1, -1, false);
   pg.startGrabbing();
   enableEvents(AWTEvent.MOUSE_EVENT_MASK);
 }
 public void paint(Graphics g) {
   g.drawImage(i, 10, 10, this);
 }
 protected void processMouseEvent(MouseEvent e) {
   if (e.getID() == MouseEvent.MOUSE_CLICKED) {
     System.out.println("Status: " + pg.getStatus());
     System.out.println("Width:  " + pg.getWidth());
     System.out.println("Height: " + pg.getHeight());
     System.out.println("Pixels: " + (pg.getPixels() instanceof byte[] ? "bytes" : "ints"));
     System.out.println("Model:  " + pg.getColorModel());
   }
   super.processMouseEvent(e);
 }

}

      </source>
   
  
 
  



PixelGrabber: getStatus()

   <source lang="java">

// This example is from the book _Java AWT Reference_ by John Zukowski. // Written by John Zukowski. Copyright (c) 1997 O"Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or import java.applet.Applet; import java.awt.AWTEvent; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.image.PixelGrabber; public class MainClass extends Applet {

 Image i;
 PixelGrabber pg;
 public void init() {
   i = getImage(getDocumentBase(), "ora-icon.gif");
   pg = new PixelGrabber(i, 0, 0, -1, -1, false);
   pg.startGrabbing();
   enableEvents(AWTEvent.MOUSE_EVENT_MASK);
 }
 public void paint(Graphics g) {
   g.drawImage(i, 10, 10, this);
 }
 protected void processMouseEvent(MouseEvent e) {
   if (e.getID() == MouseEvent.MOUSE_CLICKED) {
     System.out.println("Status: " + pg.getStatus());
     System.out.println("Width:  " + pg.getWidth());
     System.out.println("Height: " + pg.getHeight());
     System.out.println("Pixels: " + (pg.getPixels() instanceof byte[] ? "bytes" : "ints"));
     System.out.println("Model:  " + pg.getColorModel());
   }
   super.processMouseEvent(e);
 }

}

      </source>
   
  
 
  



PixelGrabber: getWidth()

   <source lang="java">

// This example is from the book _Java AWT Reference_ by John Zukowski. // Written by John Zukowski. Copyright (c) 1997 O"Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or import java.applet.Applet; import java.awt.AWTEvent; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import java.awt.image.PixelGrabber; public class MainClass extends Applet {

 Image i;
 PixelGrabber pg;
 public void init() {
   i = getImage(getDocumentBase(), "ora-icon.gif");
   pg = new PixelGrabber(i, 0, 0, -1, -1, false);
   pg.startGrabbing();
   enableEvents(AWTEvent.MOUSE_EVENT_MASK);
 }
 public void paint(Graphics g) {
   g.drawImage(i, 10, 10, this);
 }
 protected void processMouseEvent(MouseEvent e) {
   if (e.getID() == MouseEvent.MOUSE_CLICKED) {
     System.out.println("Status: " + pg.getStatus());
     System.out.println("Width:  " + pg.getWidth());
     System.out.println("Height: " + pg.getHeight());
     System.out.println("Pixels: " + (pg.getPixels() instanceof byte[] ? "bytes" : "ints"));
     System.out.println("Model:  " + pg.getColorModel());
   }
   super.processMouseEvent(e);
 }

}

      </source>
   
  
 
  



PixelGrabber: grabPixels()

   <source lang="java">

// This example is from the book _Java AWT Reference_ by John Zukowski. // Written by John Zukowski. Copyright (c) 1997 O"Reilly & Associates. // You may study, use, modify, and distribute this example for any purpose. // This example is provided WITHOUT WARRANTY either expressed or import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; import java.awt.MediaTracker; import java.awt.image.ImageObserver; import java.awt.image.MemoryImageSource; import java.awt.image.PixelGrabber; public class MainClass extends Applet {

 Image i, j, k, l;
 public void init() {
   MediaTracker mt = new MediaTracker(this);
   i = getImage(getDocumentBase(), "ora-icon.gif");
   mt.addImage(i, 0);
   try {
     mt.waitForAll();
     int width = i.getWidth(this);
     int height = i.getHeight(this);
     int pixels[] = new int[width * height];
     PixelGrabber pg = new PixelGrabber(i, 0, 0, width, height, pixels, 0, width);
     if (pg.grabPixels() && ((pg.status() & ImageObserver.ALLBITS) != 0)) {
       j = createImage(new MemoryImageSource(width, height, rowFlipPixels(pixels, width, height),
           0, width));
       k = createImage(new MemoryImageSource(width, height, colFlipPixels(pixels, width, height),
           0, width));
       l = createImage(new MemoryImageSource(height, width, rot90Pixels(pixels, width, height), 0,
           height));
     }
   } catch (InterruptedException e) {
     e.printStackTrace();
   }
 }
 public void paint(Graphics g) {
   g.drawImage(i, 10, 10, this); // regular
   if (j != null)
     g.drawImage(j, 150, 10, this); // rowFlip
   if (k != null)
     g.drawImage(k, 10, 60, this); // colFlip
   if (l != null)
     g.drawImage(l, 150, 60, this); // rot90
 }
 private int[] rowFlipPixels(int pixels[], int width, int height) {
   int newPixels[] = null;
   if ((width * height) == pixels.length) {
     newPixels = new int[width * height];
     int newIndex = 0;
     for (int y = height - 1; y >= 0; y--)
       for (int x = width - 1; x >= 0; x--)
         newPixels[newIndex++] = pixels[y * width + x];
   }
   return newPixels;
 }
 private int[] colFlipPixels(int pixels[], int width, int height) {
   int newPixels[] = null;
   if ((width * height) == pixels.length) {
     newPixels = new int[width * height];
     int newIndex = 0;
     for (int y = 0; y < height; y++)
       for (int x = width - 1; x >= 0; x--)
         newPixels[newIndex++] = pixels[y * width + x];
   }
   return newPixels;
 }
 private int[] rot90Pixels(int pixels[], int width, int height) {
   int newPixels[] = null;
   if ((width * height) == pixels.length) {
     newPixels = new int[width * height];
     int newIndex = 0;
     for (int x = width - 1; x >= 0; x--)
       for (int y = 0; y < height; y++)
         newPixels[newIndex++] = pixels[y * width + x];
   }
   return newPixels;
 }

}

      </source>