import java.awt.AWTEvent; import java.awt.Graphics; import java.awt.Image; import java.awt.event.WindowEvent; import javax.swing.*; import javax.imageio.*; import java.io.*; import java.awt.image.*; public class Smaller{ public static void main(String[] args) { new ImageView(); } } class ImageView extends JFrame { ImageView () { super("Smaller by Ivan"); setLayout(null); setSize(630, 400); Image ivImage = null; try { ivImage = ImageIO.read(new File("VENUS.BMP")); } catch (Exception e) { e.printStackTrace(); } BufferedImage bImage = (BufferedImage) ivImage; ImageSmaller imgSmlr = new ImageSmaller(bImage); JLabel imageBefore = new JLabel(new ImageIcon(bImage)); imageBefore.setBounds(10,10,300,150); add(imageBefore); JLabel imageAfter = new JLabel(new ImageIcon(imgSmlr.smlrImg)); imageAfter.setBounds(320,10,300,150); add(imageAfter); JLabel titleLbl = new JLabel(bImage.getWidth() + " x " + bImage.getHeight()); titleLbl.setBounds(10, 170, 300, 20); add(titleLbl); enableEvents(AWTEvent.WINDOW_EVENT_MASK); validate(); setVisible(true); setResizable(false); setLocationRelativeTo(null); } protected void processWindowEvent (WindowEvent e){ if (e.getID() == WindowEvent.WINDOW_CLOSING) { setVisible(false); dispose(); System.exit(0); } else { super.processWindowEvent(e); } } } class ImageSmaller { BufferedImage smlrImg = null; ImageSmaller (BufferedImage bImage){ this.smlrImg = cloneBuffer(bImage); } BufferedImage cloneBuffer (BufferedImage bImage) { BufferedImage b = new BufferedImage(bImage.getWidth(), bImage.getHeight(), bImage.getType()); Graphics g = b.getGraphics(); g.drawImage(bImage, 0, 0, null); g.dispose(); return b; } } // 色相、饱和度、亮度对图片体积的影响(by BGLL - 知乎):http://is.gd/Wo76gN