图像处理
《零基础学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值、宽度、高度、通知对象 } } }
图像缩放 实例输出: