图像处理

《零基础学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   TeaTracing  阅读(152)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示