FileDialog文件对话框,实现打开图片并保存到指定位置

该博客介绍了如何使用Java进行图像的读取和保存操作。通过创建一个简单的图形用户界面,用户可以选择打开图片,然后将其另存到指定位置。代码示例中展示了如何使用ImageIO类来实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图:

1.点击打开按钮,选择要打开的图片:

 

2.打开后的图片:

 

3.再单击另存为到指定位置再点击保存:

4.保存后,双击打开可以查看:

 

代码实现:

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

//读取并保存图像
public class ReadAndSaveImage {
	Frame frame = new Frame("图片查看器");
	
	MenuBar menuBar = new MenuBar();//菜单条
	
	Menu menu = new Menu("文件");
	
	MenuItem open = new MenuItem("打开");
	
	MenuItem save = new MenuItem("另存为");
	
	//记录本地存取到内存中的图片
	BufferedImage image;
	
	private class MyCanvas extends Canvas {
		@Override
		public void paint(Graphics g) {
			g.drawImage(image,0,0,null);//绘制图片
		}
	}
	
	MyCanvas drawArea = new MyCanvas();
	
	public void init() {
		menuBar.add(menu);
		menu.add(open);
		menu.add(save);
		frame.setMenuBar(menuBar);
		
		open.addActionListener(e->{
			//打开一个文件对话框
			FileDialog fileDialog = new FileDialog(frame,"打开图片",FileDialog.LOAD);//打开
			fileDialog.setVisible(true);
			
			String dir = fileDialog.getDirectory();//获取图片路径
			String fileName = fileDialog.getFile();//获取图片名称
			
			try {
				image = ImageIO.read(new File(dir,fileName));//获取图片
				drawArea.repaint();//重绘图片
			} catch (IOException ex) {
				ex.printStackTrace();
			}
		});
		save.addActionListener(e->{
			//展示文件对话框
			FileDialog fileDialog = new FileDialog(frame,"保存图片",FileDialog.SAVE);//保存
			fileDialog.setVisible(true);
			
			String dir = fileDialog.getDirectory();//获取图片路径
			String fileName = fileDialog.getFile();//获取图片名称
			
			try {
				ImageIO.write(image,"JPEG",new File(dir,fileName));//将图片存取到指定位置
			} catch (IOException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		});
		
		frame.add(drawArea);
		frame.setBounds(700,250,800,800);
		frame.setVisible(true);
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.out.println("程序停止运行!");
				System.exit(0);
			}
		});
	}
	public static void main(String[] args) {
		new ReadAndSaveImage().init();
	}
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T何必当初

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值