我想用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);
}}
而且,我已經試過BufferedImage的流行的解決方案與ImageIO的,但在這種情況下,我無法創建一個座標系,而不是我在圖像文件中的黑色矩形。
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/)。 –
你應該寫_不_圖像_inside_的循環,但_after_循環,即先填寫,然後將圖像寫入和處置。 – Thomas
另外,'TYPE_BYTE_INDEXED'在JPEG下無法正常工作。 – haraldK