在實際生活中,很多軟體都支持打開本地磁盤已經存在的圖片,然后進行編輯,編輯完畢后,再重新保存到本地磁盤,如果使用AWT要完成這樣的功能,那么需要使用到ImageIO這個類,可以操作本地磁盤的圖片檔案,
| 方法名稱 | 方法功能 |
|---|---|
| static BufferedImage read(File input) | 讀取本地磁盤圖片檔案 |
| static BufferedImage read(InputStream input) | 讀取本地磁盤圖片檔案 |
| static boolean write(RenderedImage im, String formatName, File output) | 往本地磁盤中輸出圖片檔案 |
案例:
? 撰寫圖片查看程式,支持另存操作
演示視頻
<iframe height="498" src="https://player.youku.com/embed/XNTg2MDc0NDU4MA==" frameborder="0" 'allowfullscreen'=""></iframe>演示代碼:
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/
公眾號:“愚生淺末”

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/458200.html
標籤:Java
上一篇:Spring 原始碼(1)Spring IOC Bean 創建的整體流程
下一篇:redis續集
