Java-GUI编程之ImageIO的使用

博客 分享
0 225
张三
张三 2022-04-14 15:57:57
悬赏:0 积分 收藏

Java-GUI编程之ImageIO的使用

在实际生活中,很多软件都支持打开本地磁盘已经存在的图片,然后进行编辑,编辑完毕后,再重新保存到本地磁盘。如果使用AWT要完成这样的功能,那么需要使用到ImageIO这个类,可以操作本地磁盘的图片文件。

方法名称方法功能
static BufferedImage read(File input)读取本地磁盘图片文件
static BufferedImage read(InputStream input)读取本地磁盘图片文件
static boolean write(RenderedImage im, String formatName, File output)往本地磁盘中输出图片文件

案例:

? 编写图片查看程序,支持另存操作

演示视频

演示代码:

import javax.imageio.ImageIO;import java.awt.image.BufferedImage;import java.io.File;public class ReadAndSaveImage {    private Frame frame = new Frame("图片查看器");    private BufferedImage image;    private class MyCanvas  extends Canvas{        @Override        public void paint(Graphics g) {            if (image!=null){                g.drawImage(image,0,0,image.getWidth(),image.getHeight(),null);            }        }    }    private MyCanvas imageComponent = new MyCanvas();    public void init() throws Exception{        //设置菜单项        MenuBar mb = new MenuBar();        Menu menu = new Menu("文件");        MenuItem openItem = new MenuItem("打开");        MenuItem saveItem = new MenuItem("另存为");        openItem.addActionListener(e -> {            //弹出对话框,选择本地图片            FileDialog oDialog = new FileDialog(frame);            oDialog.setVisible(true);            //读取用户选择的图片            String dir = oDialog.getDirectory();            String file = oDialog.getFile();            try {                image = ImageIO.read(new File(dir,file));                imageComponent.repaint();            } catch (IOException e1) {                e1.printStackTrace();            }        });        saveItem.addActionListener(e -> {            //弹出对话框,另存为            FileDialog sDialog = new FileDialog(frame,"保存图片",FileDialog.SAVE);            sDialog.setVisible(true);            String dir = sDialog.getDirectory();            String file = sDialog.getFile();            try {                ImageIO.write(image,"JPEG",new File(dir,file));            } catch (IOException e1) {                e1.printStackTrace();            }        });        mb.add(menu);        menu.add(openItem);        menu.add(saveItem);        frame.setMenuBar(mb);        frame.add(imageComponent);        frame.setBounds(200,200,800,600);        frame.setVisible(true);        frame.addWindowListener(new WindowAdapter() {            @Override            public void windowClosing(WindowEvent e) {                System.exit(0);            }        });    }    public static void main(String[] args) throws Exception {        new ReadAndSaveImage().init();    }}

公众号文章地址:https://mp.weixin.qq.com/s/X-P2h4zds2Gpo6ofaZFW9A

个人博客:https://kohler19.gitee.io/
公众号:“愚生浅末”

posted @ 2022-04-14 15:29 愚生浅末 阅读(0) 评论(0) 编辑 收藏 举报
回帖
    张三

    张三 (王者 段位)

    821 积分 (2)粉丝 (41)源码

     

    温馨提示

    亦奇源码

    最新会员