逍遥云

努力做好自己
随笔 - 0, 文章 - 1, 评论 - 0, 引用 - 0
数据加载中……

swing切图

不敢发文章,怕高人们笑话,随意写了一个东西,就当是个开始吧:)

  1 package net.pallove.swing;
  2 
  3 import java.awt.BorderLayout;
  4 import java.awt.GridLayout;
  5 import java.awt.Image;
  6 import java.awt.event.ActionEvent;
  7 import java.awt.event.ActionListener;
  8 import java.awt.image.BufferedImage;
  9 import java.io.File;
 10 import java.io.IOException;
 11 
 12 import javax.imageio.ImageIO;
 13 import javax.swing.ImageIcon;
 14 import javax.swing.JButton;
 15 import javax.swing.JFileChooser;
 16 import javax.swing.JFrame;
 17 import javax.swing.JLabel;
 18 import javax.swing.JPanel;
 19 import javax.swing.UIManager;
 20 import javax.swing.filechooser.FileFilter;
 21 
 22 public class CutImage {
 23     public static void main(String[] args) {
 24         new CutImage();
 25     }
 26 
 27     public CutImage() {
 28         createUI();
 29         showUI();
 30     }
 31 
 32     private void showUI() {
 33         win.setVisible(true);
 34     }
 35 
 36     private void createUI() {
 37         try {
 38             UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
 39         } catch (Exception e) {
 40             e.printStackTrace();
 41         }
 42         win = new JFrame("cut image");
 43         win.setResizable(false);
 44         win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 45         win.setSize(w, h + 50);
 46 
 47         contentPanel = new JPanel();
 48         contentPanel.setLayout(new GridLayout(44));
 49         win.getContentPane().add(contentPanel);
 50 
 51         final JPanel panel_1 = new JPanel();
 52         win.getContentPane().add(panel_1, BorderLayout.SOUTH);
 53 
 54         final JFileChooser chooser = new JFileChooser();
 55         chooser.setFileFilter(new FileFilter() {
 56 
 57             @Override
 58             public boolean accept(File f) {
 59                 if (f.isDirectory() || f.getName().endsWith(".jpg"))
 60                     return true;
 61                 return false;
 62             }
 63 
 64             @Override
 65             public String getDescription() {
 66                 return "Image/jpg";
 67             }
 68 
 69         });
 70         chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
 71 
 72         final JButton openImageButton = new JButton();
 73         openImageButton.setText("Open Image");
 74         openImageButton.addActionListener(new ActionListener() {
 75 
 76             @Override
 77             public void actionPerformed(ActionEvent e) {
 78                 try {
 79                     if (chooser.showOpenDialog(win) == JFileChooser.APPROVE_OPTION) {
 80                         img = ImageIO.read(chooser.getSelectedFile());
 81                         setGridImage();
 82                     }
 83                 } catch (IOException ex) {
 84                     ex.printStackTrace();
 85                 }
 86             }
 87 
 88         });
 89         panel_1.add(openImageButton);
 90 
 91     }
 92 
 93     // set grid image
 94     private void setGridImage() {
 95         int bW = img.getWidth(null);
 96         int bH = img.getHeight(null);
 97         if (bW > bH) {
 98             bH = h;
 99             bW *= h / bH;
100         } else {
101             bW = w;
102             bH *= w / bW;
103         }
104 
105         BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
106         bi.getGraphics().drawImage(img, 00, w, h, null);
107 
108         int size = w / line;
109 
110         System.out.println("the size:" + size);
111 
112         for (int row = 0; row < line; row++) {
113             for (int col = 0; col < line; col++) {
114                 JLabel label = new JLabel();
115                 ImageIcon icon = new ImageIcon(bi.getSubimage(col * size, row
116                         * size, size, size));
117                 label.setIcon(icon);
118                 contentPanel.add(label);
119             }
120         }
121         contentPanel.updateUI();
122     }
123 
124     private static final int line = 4;
125 
126     private static final int w = 300;
127     private static final int h = 300;
128 
129     private JPanel contentPanel;
130     private Image img;
131     private JFrame win;
132 }
133 

posted on 2007-11-14 18:12 逍遥云 阅读(117) 评论(0)  编辑  收藏 所属分类: Java


只有注册用户登录后才能发表评论。


网站导航: