不敢发文章,怕高人们笑话,随意写了一个东西,就当是个开始吧:)
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(4, 4));
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, 0, 0, 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