2015-05-07 2 views
2

Я начинающий Java. Я создаю приложение для скриншотов, в котором вы нажимаете PrtScn, и он захватывает экран. Я хочу, чтобы это изображение экрана сохранялось с помощью Filedialog или JFileChooser. Я не уверен, как передать BufferedImage в поле Filedialog. В моем коде я просто закодировал место сохранения.Как передать BufferedImage в Filedialog для сохранения в Java?

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); 
} 
} 
+0

Используйте FileDialog или JFileChooser, чтобы получить путь/имя файла, и использовать этот файл, чтобы сохранить изображение. – copeg

ответ

3

Используйте FileDialog или JFileChooser для получения File (имя и путь), который пользователь выбирает. Затем используйте этот файл, чтобы сохранить изображение с помощью 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 
} 
+0

Спасибо, ребята. Это сработало для меня – Scitech

0

Вы не передаёте 'Buffered Image' в файл.

FileDialog должен спросить пользователя, где хранить файл, и как только пользователь выбирает местоположение и имя файла, вы записываете «Буферизованное изображение» в этот файл и сохраняете его.

Смежные вопросы