1

可能重复:
将 Graphics2D 转换为 Image 或 BufferedImage

对不起。这是一个非常基本的问题。但我对这个平台很陌生。我正在使用 graphics2d 绘图功能绘制一条线。我想将此作为图像保存到我的系统中。我用谷歌搜索了它,发现BufferedImage该类在执行此操作时很有用,然后使用 imagedraw 函数。

但我无法弄清楚如何在我的代码中准确使用它。谁能帮帮我吗?

这是我的代码。

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.event.*;
import java.awt.geom.Line2D;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class DrawAndSaveImage extends JApplet {
    public void init() {
        setBackground(Color.lightGray);
    }

public void paint(Graphics g) {
    Graphics2D g2d = (Graphics2D) g;
    g2d.setPaint(Color.black);
    g2d.draw(new Line2D.Double(50,150,150,150 ));

}

public static void main(String s[]) {
    JFrame frame = new JFrame("sample image");
    JApplet applet = new DrawAndSaveImage();
    frame.getContentPane().add("Center", applet);
    applet.init();
    frame.setSize(200, 200);
    frame.show();
}
}
4

2 回答 2

1

首先,您可以像这样创建一个BufferedImage实例:

    private BufferedImage image = new BufferedImage(600, 800, BufferedImage.TYPE_INT_RGB);

然后你可以从中获取Graphics2d对象:

    Graphics2D g2d = image.createGraphics();

然后,您可以使用ImageIOAPI 来保存图像。

于 2013-01-11T06:58:16.180 回答
1
  1. JFrame并且main不应该在小程序中使用,除非您尝试创建混合应用程序。

  2. 不要覆盖paint()方法

  3. 用于SwingUtilities.invokeLater()创建 GUI

  4. Applet 不允许写入/读取外部文件,除非它已签名

  5. ImageIO.write()可以将图像写入文件

于 2013-01-11T07:01:08.447 回答