Ich versuche, einige Punkte mit X- und Y-Koordinaten zu zeichnen und speichern Sie die Ausgabe in eine Bilddatei, aber ich konnte nicht. (Es ist nicht notwendig, sie auf JFrame zu sehen) Soweit ich durch die Suche gelernt habe, kann ich die Zeichnung erstellen und auf JFrame zeigen, aber ich konnte diese Ausgabe nicht in einer Datei speichern.Wie zeichne ich Punkte und speichere das Ausgabebild in 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);
}}
Außerdem habe ich die beliebte Lösung von BufferedImage mit ImageIO versucht, aber in diesem Fall konnte ich nicht ein Koordinatensystem erstellen, anstatt bekam ich ein schwarzes Rechteck in Bilddatei.
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();
}}
Vielen Dank im Voraus
Für bessere Hilfe, früher, ein [MCVE] oder [kurze, unabhängige, korrekte Beispiel] (http://www.sscce.org/). –
Sie sollten das Bild _inside_ nicht in die Schleife, sondern _nach der Schleife schreiben, d. – Thomas
Außerdem funktioniert 'TYPE_BYTE_INDEXED' nicht gut mit JPEG. – haraldK