我使用g2d创建此图像:
代码如下:
g2d.rotate(Math.toRadians(90));
g2d.drawRenderedImage(bufferedImage, null);
现在,我正在尝试将其旋转90度,以使蓝色方块出现在左下方:
所以我添加了这个:
// Constructs a BufferedImage of one of the predefined image types.
BufferedImage bufferedImage = new BufferedImage(408, 408, BufferedImage.TYPE_INT_RGB);
// Create a graphics which can be used to draw into the buffered image
Graphics2D g2d = bufferedImage.createGraphics();
List<Pixel> pixels = cacheRepo.findAll();
pixels.stream().forEach(pixel -> {
g2d.setColor(getColorFromPixel(pixel));
g2d.fillRect(getPos(pixel.getPosition().x), getPos(pixel.getPosition().y), 20, 20);
});
g2d.rotate(Math.toRadians(90));
g2d.drawRenderedImage(bufferedImage, null);
g2d.dispose();
// Save as PNG
File file = new File("myimage.png");
try {
ImageIO.write(bufferedImage, "png", file);
} catch (IOException e) {
e.printStackTrace();
}
但是旋转不会发生(我仍然有相同的图像)。
这是完整的代码片段,其中包含保存图像的部分:
builder.table
答案 0 :(得分:2)
在您要对其执行任何操作之前,应先应用转换,否则转换不会影响在此之前进行的任何操作...
BufferedImage bufferedImage = new BufferedImage(408, 408, BufferedImage.TYPE_INT_RGB);
// Create a graphics which can be used to draw into the buffered image
Graphics2D g2d = bufferedImage.createGraphics();
g2d.rotate(Math.toRadians(90));
List<Pixel> pixels = cacheRepo.findAll();
pixels.stream().forEach(pixel -> {
g2d.setColor(getColorFromPixel(pixel));
g2d.fillRect(getPos(pixel.getPosition().x), getPos(pixel.getPosition().y), 20, 20);
});
//g2d.rotate(Math.toRadians(90));
// Not sure what you're hoping to achieve here
//g2d.drawRenderedImage(bufferedImage, null);
g2d.dispose();
如果愿意,请使用两个BufferedImages
。将“常规”内容渲染到第一个,然后使用第二个绘画第一个,但是要进行旋转变换...因为变换使我的头脑陷入
使用您的代码绘制黑色图像
您可能需要提供一个锚点,可以围绕该锚点旋转图像,否则它将在顶部/左侧角附近进行评级
您会原谅我的,但这不像以前从未有人问过这种想法