如何将 BufferedImage 传递给 Filedialog 以保存在 Java 中?
How do I pass BufferedImage to Filedialog to save in Java?
我是 Java 初学者。我正在构建一个屏幕截图应用程序,您可以在其中按 PrtScn 并捕获屏幕。我希望借助 Filedialog
或 JFileChooser
保存此屏幕图像。我不确定如何将 BufferedImage
传递给 Filedialog
框。在我的代码中,我刚刚硬编码了保存位置。
import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class SeeEyeEye {
public static void main(String[] args) {
JFrame aWindow = new JFrame("SeeEyeEye");
aWindow.setBounds(100, 310, 210, 110);
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField typingArea = new JTextField(20);
typingArea.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {
displayInfo(e, "KEY TYPED: "); }
public void keyPressed(KeyEvent e) {
displayInfo(e, "KEY PRESSED: "); }
public void keyReleased(KeyEvent e) {
displayInfo(e, "KEY RELEASED: "); }
protected void displayInfo(KeyEvent e, String s) {
String keyString;
int keyCode = e.getKeyCode();
if(keyCode==154) {
try {
Robot robot = new Robot();
// Capture the screen shot of the area of the screen defined by the rectangle
BufferedImage bi=robot.createScreenCapture(new Rectangle(0,25,1366,744));
ImageIO.write(bi, "png", new File("C://Users//Rao//Desktop//s.png"));
}
catch (AWTException e1) {
e1.printStackTrace(); }
catch (IOException e1) {
e1.printStackTrace(); }
}
else { System.out.println("try again");}
keyString = "key code = " + keyCode + " (" + KeyEvent.getKeyText(keyCode) + ")";
System.out.println(keyString);
}
});
aWindow.add(typingArea);
aWindow.setVisible(true);
}
}
您没有将“Buffered Image
”传递给文件。
FileDialog
就是问用户把文件存放在哪里,一旦用户选择了位置和文件名,你就把'Buffered Image'写到那个文件里保存。
使用 FileDialog 或 JFileChooser 获取 File (name and path) the user selects. Then use this File to save the image using ImageIO:
JFileChooser fileChooser = new JFileChooser();
int returnVal = fileChooser.showOpenDialog(null);
if ( returnVal == JFileChooser.APPROVE_OPTION ){
File file = fileChooser.getSelectedFile();
ImageIO.write(image, 'jpg', file);//assuming you want a jpg, and BufferedImage variable name is image
}
我是 Java 初学者。我正在构建一个屏幕截图应用程序,您可以在其中按 PrtScn 并捕获屏幕。我希望借助 Filedialog
或 JFileChooser
保存此屏幕图像。我不确定如何将 BufferedImage
传递给 Filedialog
框。在我的代码中,我刚刚硬编码了保存位置。
import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class SeeEyeEye {
public static void main(String[] args) {
JFrame aWindow = new JFrame("SeeEyeEye");
aWindow.setBounds(100, 310, 210, 110);
aWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JTextField typingArea = new JTextField(20);
typingArea.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {
displayInfo(e, "KEY TYPED: "); }
public void keyPressed(KeyEvent e) {
displayInfo(e, "KEY PRESSED: "); }
public void keyReleased(KeyEvent e) {
displayInfo(e, "KEY RELEASED: "); }
protected void displayInfo(KeyEvent e, String s) {
String keyString;
int keyCode = e.getKeyCode();
if(keyCode==154) {
try {
Robot robot = new Robot();
// Capture the screen shot of the area of the screen defined by the rectangle
BufferedImage bi=robot.createScreenCapture(new Rectangle(0,25,1366,744));
ImageIO.write(bi, "png", new File("C://Users//Rao//Desktop//s.png"));
}
catch (AWTException e1) {
e1.printStackTrace(); }
catch (IOException e1) {
e1.printStackTrace(); }
}
else { System.out.println("try again");}
keyString = "key code = " + keyCode + " (" + KeyEvent.getKeyText(keyCode) + ")";
System.out.println(keyString);
}
});
aWindow.add(typingArea);
aWindow.setVisible(true);
}
}
您没有将“Buffered Image
”传递给文件。
FileDialog
就是问用户把文件存放在哪里,一旦用户选择了位置和文件名,你就把'Buffered Image'写到那个文件里保存。
使用 FileDialog 或 JFileChooser 获取 File (name and path) the user selects. Then use this File to save the image using ImageIO:
JFileChooser fileChooser = new JFileChooser();
int returnVal = fileChooser.showOpenDialog(null);
if ( returnVal == JFileChooser.APPROVE_OPTION ){
File file = fileChooser.getSelectedFile();
ImageIO.write(image, 'jpg', file);//assuming you want a jpg, and BufferedImage variable name is image
}