-1
BufferedImage()를 사용하여 캡처 한 스크린 샷 (이미지 데이터)에서 JFrame 구성 요소의 경계를 얻고 싶습니다.BufferedImage 데이터 출력에서 JFrame 구성 요소의 기본 경계를 얻으려면 어떻게해야합니까?
현재이 작업을 수행 중입니다.
import java.awt.Component;
import java.awt.image.BufferedImage;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.*;
import javax.imageio.ImageIO;
import java.io.File;
class getframeImageExample {
public static BufferedImage getImageData(
Component component) {
BufferedImage image = new BufferedImage(
component.getWidth(),
component.getHeight(),
BufferedImage.TYPE_INT_RGB
);
component.printAll(image.getGraphics());
return image;
}
public static void main(String[] args) {
Runnable r = new Runnable() {
public void run() {
final JFrame f = new JFrame("JFrame Border");
f.setUndecorated(false);
f.setLocation(500,300);
f.setSize(560, 420);
JMenuItem screenshot =
new JMenuItem("Take Snapshot");
screenshot.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent ae) {
BufferedImage imageOutput = getImageData(f.getRootPane());
try {
// write the image as a PNG
ImageIO.write(
imageOutput,
"png",
new File("CapturedImage.png"));
} catch(Exception e) {
e.printStackTrace();
}
}
});
JMenu menu = new JMenu("Menu");
menu.add(screenshot);
JMenuBar menuBar = new JMenuBar();
menuBar.add(menu);
f.setJMenuBar(menuBar);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
};
SwingUtilities.invokeLater(r);
}
}
자세한 내용은 PNG 파일을 첨부 참조하시기 바랍니다.
Original JFrame window; Captured Image
작품. 어떤 OS인가? – copeg
사진에서 이것이 분명하지 않습니까? Win 7 (최악의 경우 Vista; -)). –
Windows 7 Enterprise (64 비트)를 사용하고 있습니다. – avp