我需要在linux非图形环境中旋转一些图像。 所以当我执行:
private static BufferedImage tilt(BufferedImage image, double angle) {
double sin = Math.abs(Math.sin(angle)), cos = Math.abs(Math.cos(angle));
int w = image.getWidth(), h = image.getHeight();
if (w > h) {
int neww = (int)Math.floor(w*cos+h*sin), newh = (int)Math.floor(h*cos+w*sin);
GraphicsConfiguration gc = getDefaultConfiguration();
BufferedImage result = gc.createCompatibleImage(neww, newh, Transparency.TRANSLUCENT);
Graphics2D g = result.createGraphics();
g.translate((neww-w)/2, (newh-h)/2);
g.rotate(angle, w/2, h/2);
g.drawRenderedImage(image, null);
g.dispose();
return result;
} else {
return null;
}
}
private static GraphicsConfiguration getDefaultConfiguration() {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
return gd.getDefaultConfiguration();
}
我在sun.java2d.HeadlessGraphicsEnvironment.getDefaultScreenDevice(未知来源)获得java.awt.HeadlessException。
我已经设置了我的显示环境变量: export DISPLAY = localhost:0.0 我还设置了java.awt.headless = true 它没用?
那么我还需要做些什么才能得到异常? 是否有另一种方法可以在没有awt类的情况下旋转图像?
提前致谢。