Advertisement
Guest User

Untitled

a guest
Mar 3rd, 2015
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.34 KB | None | 0 0
  1. /*
  2.  * @(#)ImageOps.java    1.2 98/07/09
  3.  */
  4.  
  5. import java.awt.*;
  6. import java.awt.event.*;
  7. import javax.swing.*;
  8. import java.awt.image.*;
  9. import java.awt.geom.AffineTransform;
  10. import java.awt.font.TextLayout;
  11. import java.awt.event.WindowEvent;
  12. import java.awt.event.WindowListener;
  13. import java.awt.event.WindowAdapter;
  14.  
  15.  
  16. public class ImageOps extends JApplet {
  17.  
  18.     private BufferedImage bi[];
  19.     public static final float[] SHARPEN3x3_3 = {
  20.         0.f, -1.f,  0.f,
  21.         -1.f,  5.f, -1.f,
  22.         0.f, -1.f,  0.f};
  23.  
  24.     public void init() {
  25.         setBackground(Color.white);
  26.  
  27.         bi = new BufferedImage[4];
  28.         String s[] = { "bld.jpg", "bld.jpg", "boat.gif", "boat.gif"};
  29.         for ( int i = 0; i < bi.length; i++ ) {
  30.             Image img = getToolkit().getImage("images/" + s[i]);
  31.             try {
  32.                 MediaTracker tracker = new MediaTracker(this);
  33.                 tracker.addImage(img, 0);
  34.                 tracker.waitForID(0);
  35.             }
  36.             catch ( Exception e ) {}
  37.             int iw = img.getWidth(this);
  38.             int ih = img.getHeight(this);
  39.             bi[i] = new BufferedImage(iw, ih, BufferedImage.TYPE_INT_RGB);
  40.             Graphics2D big = bi[i].createGraphics();
  41.             big.drawImage(img,0,0,this);
  42.         }
  43.     }
  44.  
  45.  
  46.     public void paint(Graphics g) {
  47.         Graphics2D g2 = (Graphics2D) g;
  48.         g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
  49.                             RenderingHints.VALUE_ANTIALIAS_ON);
  50.         g2.setRenderingHint(RenderingHints.KEY_RENDERING,
  51.                             RenderingHints.VALUE_RENDER_QUALITY);
  52.         int w = getSize().width;
  53.         int h = getSize().height;
  54.  
  55.         g2.setColor(Color.black);
  56.         float[][] data = {{0.1f, 0.1f, 0.1f,    // low-pass filter
  57.                 0.1f, 0.2f, 0.1f,
  58.                 0.1f, 0.1f, 0.1f},
  59.             SHARPEN3x3_3};
  60.  
  61.         String theDesc[] = { "Convolve LowPass", "Convolve Sharpen",
  62.             "LookupOp", "RescaleOp"};
  63.         for ( int i = 0; i < bi.length; i++ ) {
  64.             int iw = bi[i].getWidth(this);
  65.             int ih = bi[i].getHeight(this);
  66.             int x = 0, y = 0;
  67.  
  68.             AffineTransform at = new AffineTransform();
  69.             at.scale((w-14)/2.0/iw, (h-34)/2.0/ih);
  70.  
  71.             BufferedImageOp biop = null;
  72.             BufferedImage bimg = new BufferedImage(iw,ih,BufferedImage.TYPE_INT_RGB);
  73.  
  74.             switch ( i ) {
  75.             case 0 :
  76.             case 1 : x = i==0?5:w/2+3; y = 15;
  77.                 Kernel kernel = new Kernel(3,3,data[i]);
  78.                 ConvolveOp cop = new ConvolveOp(kernel,
  79.                                                 ConvolveOp.EDGE_NO_OP,
  80.                                                 null);
  81.                 cop.filter(bi[i],bimg);
  82.                 biop = new AffineTransformOp(at,
  83.                                              AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
  84.                 break;
  85.             case 2 : x = 5; y = h/2+15;
  86.                 byte chlut[] = new byte[256];
  87.                 for ( int j=0;j<200 ;j++ )
  88.                     chlut[j]=(byte)(256-j);
  89.                 ByteLookupTable blut=new ByteLookupTable(0,chlut);
  90.                 LookupOp lop = new LookupOp(blut, null);
  91.                 lop.filter(bi[i],bimg);  
  92.                 biop = new AffineTransformOp(at,
  93.                                              AffineTransformOp.TYPE_BILINEAR);
  94.                 break;
  95.             case 3 : x = w/2+3; y = h/2+15;
  96.                 RescaleOp rop = new RescaleOp(1.1f,20.0f, null);
  97.                 rop.filter(bi[i],bimg);
  98.                 biop = new AffineTransformOp(at,
  99.                                              AffineTransformOp.TYPE_BILINEAR);
  100.             }
  101.             g2.drawImage(bimg,biop,x,y);
  102.             TextLayout tl = new TextLayout(theDesc[i], g2.getFont(),g2.getFontRenderContext());
  103.             tl.draw(g2, (float) x, (float) y-4);
  104.         }
  105.     }
  106.  
  107.     public static void main(String s[]) {
  108.         JFrame f = new JFrame("ImageOps");
  109.         f.addWindowListener(new WindowAdapter() {
  110.             public void windowClosing(WindowEvent e) {System.exit(0);}
  111.         });
  112.         JApplet applet = new ImageOps();
  113.         f.getContentPane().add("Center", applet);
  114.         applet.init();
  115.         f.pack();
  116.         f.setSize(new Dimension(550,550));
  117.         f.show();
  118.     }
  119.  
  120.  
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement