x 좌표와 y 좌표로 점을 그리고 이미지 파일에 출력을 저장하려고했지만 할 수 없습니다. (그것들을 JFrame에서 볼 필요는 없습니다.) 검색을 통해 배웠을 때, 나는 그림을 만들어서 JFrame에 보여줄 수 있지만이 출력을 파일에 저장할 수는 없습니다.포인트를 그리고 Java에서 출력 이미지를 저장하는 방법은 무엇입니까?
public static void main(String[] args) {
try {
final JFrame frm = new JFrame("Points");
final Panel pnl = new Panel();
pnl.setPreferredSize(new Dimension(1000, 1000));
frm.setContentPane(pnl);
frm.pack();
frm.setVisible(true);
frm.repaint();
Image img;
img = frm.createImage(1000, 1000);
ImageIO.write((RenderedImage) img, "jpeg", new File("C:/.../p.jpeg"));
frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} catch (final Exception e) {
e.printStackTrace();
}
}
public static class Panel extends JPanel {
@Override
public void paintComponent(final Graphics g) {
g.setColor(Color.RED);
for (final Point p : CandidatePoints) {
g.fillRect((int) p.getX() * 10, (int) p.getY() * 10, 20, 20);
}}
게다가, 나는 ImageIO에서와의 BufferedImage의 인기 해결책을 시도했지만이 경우에 나는 좌표 시스템을 만들 수 없습니다 대신 내가 이미지 파일에 검은 사각형을 얻었다.
public static void main(String[] args) {
BufferedImage bimage = new BufferedImage(200, 200,
BufferedImage.TYPE_BYTE_INDEXED);
Graphics2D g2d = bimage.createGraphics();
g2d.setColor(Color.red);
for (final Point p : CandidatePoints) {
g2d.fillRect((int) p.getX() * 10, (int) p.getY() * 10, 20, 20);
ImageIO.write(bimage, "jpeg", new File("C:/.../p.jpeg"));
g2d.dispose();
}}
당신은 이미지를 만들고 파일을 저장하기 위해 모든 스윙 구성 요소가 필요하지 않습니다 사전
더 나은 도움을 받으려면 [MCVE] 또는 [짧은, 자체 포함, 올바른 예] (http://www.sscce.org/)를 게시하십시오. –
루프 안의 이미지를 _not_ 작성하지 말고 루프를 지나야합니다. 즉, 먼저 이미지를 채운 다음 쓰고 처리하십시오. – Thomas
또한 'TYPE_BYTE_INDEXED'는 JPEG에서 제대로 작동하지 않습니다. – haraldK