Switch to full style
General Java code examples
Post a reply

Clip of image in java

Tue Nov 11, 2008 6:41 pm

Clip of image in java
Code:
import java.awt.*;
import javax.swing.*;
import java.awt.geom.*;
import java.awt.event.*;
import java.net.URL;
import java.awt.image.BufferedImage;

public class ClipImageExample extends JApplet implements Runnable {
private final double I[] = { 6.0,2.0 };
  private final double J[] = { 6.0,5.0 };
  private double p, q;
  private double ip = I[0];
  private double iq = J[1];
  private double iw = I[0];
  private double ih = J[1];
  private double width, height;
  private GeneralPath path = new GeneralPath();
  private AffineTransform affineTransform = new AffineTransform();
  private BasicStroke stroke = new BasicStroke(20.0f);
  private Ellipse2D ellipse1 = new Ellipse2D.Float();
  private Ellipse2D ellipse2 = new Ellipse2D.Float();
  private Thread thread;
  private BufferedImage bufferedImg;
  private int w, h;
 
  public void drawImage(Graphics2D g2) {
    p += ip;
    q += iq;
    width += iw;
    height += ih;
    if (width > w / 3) {
      width = w / 3;
      iw = Math.random() * -w / 16 - 1;
    }
    if (width < w / 9) {
      width = w / 9;
      iw = Math.random() * w / 16 + 1;
    }
    if (height > h / 3) {
      height = h / 3;
      ih = Math.random() * -h / 16 - 1;
    }
    if (height < h / 9) {
      height = h / 9;
      ih = Math.random() * h / 16 + 1;
    }
    if ((p + width) > w) {
      p = (w - width) - 1;
      ip = Math.random() * -w / 32 - 1;
    }
    if (p < 0) {
      p = 3;
      ip = Math.random() * w / 32 + 1;
    }
    if ((q + height) > h) {
      q = (h - height) - 2;
      iq = Math.random() * -h / 32 - 1;
    }
    if (q < 0) {
      q = 3;
      iq = Math.random() * h / 32 + 1;
    }
    ellipse1.setFrame(p, q, width, height);
    g2.setClip(ellipse1);
    ellipse2.setFrame(p + 6, q + 5, width - 10, height - 10);
    g2.clip(ellipse2);

    path.reset();
    path.moveTo(-w / 3.0f, -h / 9.0f);
    path.lineTo(+w / 3.0f, -h / 9.0f);
    path.lineTo(-w / 5.0f, +h / 3.0f);
    path.lineTo(+0.0f, -h / 3.0f);
    path.lineTo(+w / 5.0f, +h / 3.0f);
    path.closePath();

    affineTransform.setToIdentity();
    affineTransform.translate(w * .5f, h * .5f);
    g2.transform(affineTransform);
    g2.setStroke(stroke);
    g2.setPaint(Color.cyan);
    g2.draw(path);
    affineTransform.setToIdentity();
  g2.setTransform(affineTransform);
    g2.setPaint(Color.red);

   for (int qq = 0; qq < h; qq += 40) {
      for (int pp = 0, k = 0; pp < w; k++, pp += 40) {
        switch (k) {
        case 0:
          ellipse1.setFrame(pp, qq, 20, 20);
          g2.fill(ellipse1);
          break;
        case 1:
          ellipse2.setFrame(pp, qq, 20, 20);
          g2.fill(ellipse2);
          k = -1;
        }
      }
    }
  }
  public Graphics2D createDemoGraphics2D(Graphics g) {
    Graphics2D g2 = null;
    if (bufferedImg == null || bufferedImg.getWidth() != w || bufferedImg.
         getHeight() != h) {
      bufferedImg = (BufferedImage) createImage(w, h);
      }
    if (bufferedImg != null) {
      g2 = bufferedImg.createGraphics();
      g2.setBackground(getBackground());
    }
    g2.clearRect(0, 0, w, h);
    return g2;
  }
  public void paint(Graphics g) {
    w = getWidth();
    h = getHeight();
    if (w <= 0 || h <= 0)
      return;
    Graphics2D g2 = createDemoGraphics2D(g);
    drawImage(g2);
    g2.dispose();
     if (bufferedImg != null && isShowing()) {
      g.drawImage(bufferedImg, 0, 0, this);
    }
}
  public void start() {
    thread = new Thread(this);
    thread.start();
  }
  public synchronized void stop() {
    thread = null;
  }
  public void run() {
    Thread me = Thread.currentThread();
    while (thread == me && isShowing()) {
      Graphics g = getGraphics();
      paint(g);
      g.dispose();
      thread.yield();
    }
  }
  public static void main(String s[]) {
    final ClipImageExample clip = new ClipImageExample();
    JFrame frame = new JFrame("Clip Image Example");
    frame.getContentPane().add("Center", demo);
    frame.setSize(new Dimension(450, 300));
    frame.show();
    clip.start();
  }
}



Attachments
clipImage.gif
the output
clipImage.gif (6.47 KiB) Viewed 7595 times

Post a reply
  Related Posts  to : Clip of image in java
 how to compress Bmp image in java...     -  
 Image Scale in java     -  
 flip image in java     -  
 java image effects     -  
 image binarization in java     -  
 image processing in java     -  
 crop image in java     -  
 Image Noise Filter in Java     -  
 Image Custom Filter In Java     -  
 Image Colors Frequencies Histogram in Java     -  

Topic Tags

Java Image, Java Graphics