图像处理

《零基础学Java》


  • 图像处理

    开发高级的桌面应用程序,必须掌握一些图像处理与动画制作的技术,比如显示统计图、动态按钮等。

  • 绘制图像

    绘图类不仅可以绘制几何图形,还可以绘制图像,绘制图像需要使用 drawImage()方法 ,该方法用来将图像资源显示到绘图上下文中。

    drawImage()方法 语法:

     drawImage(Image image , int x , int y , ImageObserver observer);
    /*
    	image:要显示的图像对象
    	x:图像的x坐标
    	y:图像的y坐标
    	observer:要通知的对象
    */
    

    绘制图像 实例:

    import javax.swing.*;
    import java.awt.*;
    
    public class Demo3 extends JFrame {
        public Demo3(){
            setSize(350,270);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            setTitle("绘制图像");
            add(new MyCanvas());
        }
    
        public static void main(String[] arge){
            new Demo3().setVisible(true);
        }
    
        class MyCanvas extends Canvas{
            public void paint(Graphics g){
                Image image = new ImageIcon("src/ShenLiLingHua.jpeg").getImage(); //获取图片资源
                g.drawImage(image,0,0,this); //绘制图像
            }
        }
    }
    

    绘制图像 实例输出结果:

  • 图像缩放

    使用 drawImage()方法 将图像以原始大小显示在窗体中,要实现放大、缩小,就需要使用它的重载方法。

    drawImage()重载方法 语法:

    drawImage(Image image , int x , int y , int width , int Height , ImageObserver observer );
    /*
    	image:要显示的图像对象
    	x:图像的x坐标
    	y:图像的y坐标
    	width:图像宽度
    	Height:图像高度
    	observer:要通知的对象
    */
    

    图像缩放 实例:

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    public class Demo4 extends JFrame {
        private JPanel jPanImg = null;
        private JPanel jPanBtn = null;
        private JButton jBtnBig = null;
        private JButton jBtnSmall = null;
        private Canvas canvas = null;
        private int num = 0; //全局图片大小增量
    
        public Demo4(){
            init();
        }
    
        public void init(){
            this.setBounds(100, 100, 500, 420);
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jPanImg = new JPanel();
            this.setContentPane(jPanImg);
    
            MyCanvas canvas = new MyCanvas(); //获取画布
            jPanImg.setLayout(new BorderLayout()); //设置布局
            jPanImg.add(canvas,BorderLayout.CENTER);
    
            jBtnBig = new JButton("放大");
            jBtnBig.addActionListener(new ActionListener() { //按钮监听
                @Override
                public void actionPerformed(ActionEvent e) {
                    num += 20; //让增量增加20
                    canvas.repaint(); //重新绘制图片
                }
            });
            jBtnSmall = new JButton("缩小");
            jBtnSmall.addActionListener(new ActionListener() { //按钮监听
                @Override
                public void actionPerformed(ActionEvent e) {
                    num -= 20; //让增量减少20
                    canvas.repaint(); //重新绘制图片
                }
            });
    
            jPanBtn = new JPanel();
            jPanBtn.setLayout(new GridBagLayout());
            jPanBtn.add(jBtnBig);
            jPanBtn.add(jBtnSmall);
            jPanImg.add(jPanBtn,BorderLayout.SOUTH);
    
        }
    
        public static void main(String[] arge){
            new Demo4().setVisible(true);
        }
    
        class MyCanvas extends Canvas{ //创建画布
            public void paint(Graphics g){
                Image image = new ImageIcon("src/XiaoGong.WEBP").getImage();
                int imageWidth = image.getWidth(this); //获取宽度
                int imageHight = image.getHeight(this); //获取高度
    
                g.drawImage(image,0,0,imageWidth + num,imageHight + num,this); //绘制图片 图片、X值、Y值、宽度、高度、通知对象
    
            }
        }
    }
    

    图像缩放 实例输出:

posted on 2022-05-28 21:08  TeaTracing  阅读(108)  评论(3编辑  收藏  举报