绘制图像

时间:2016-03-25 09:44:03

标签: java swing drawimage headless

我需要在服务器端修改图像(调整大小+添加文本),如下所示:

BufferedImage tmp = new BufferedImage(image.getWidth() + 50, image.getHeight() + 100, BufferedImage.TYPE_INT_RGB);
Graphics graphics = tmp.getGraphics();
graphics.fillRect(0, 0, canvas.getWidth(), 40);
graphics.drawImage(image, 0, 40, null);
graphics.setFont(graphics.getFont().deriveFont(25f));
graphics.setColor(Color.red);
graphics.drawString(textImage, 20, 30);
graphics.dispose();

但是,我收到此错误

Caused by: java.awt.HeadlessException

我忘记了什么吗?在本地它可以正常工作,但在Linux服务器上会出现上述错误。

感谢您的帮助。

编辑:或者是否有解决方法来避免这种无头的异常?

EDIT2:好的,我从服务器获取了日志:

Caused by: java.awt.HeadlessException
    at sun.java2d.HeadlessGraphicsEnvironment.getDefaultScreenDevice(HeadlessGraphicsEnvironment.java:64)

之前有人试过这个

GraphicsConfiguration config = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
BufferedImage tmp = config.createCompatibleImage(image.getWidth() + 50, image.getHeight() + 100, BufferedImage.TYPE_INT_RGB);

1 个答案:

答案 0 :(得分:2)

我在没有图形环境的Linux服务器上安装war应用程序时遇到了错误。

使用-Djava.awt.headless=true启动jvm可以解决您的问题。请注意,如果您的代码在应用程序服务器中运行,则需要使用该参数修改应用程序服务器VM。