Hallo zusammen,
ich möchte mit Graphics2D ein Bild rotieren (was auch klappt) und das rotierte Bild auf meiner
Platte abspeichern. Die Datei hat zwar die richtigen Maße, jedoch wird nur ein schwarzes Bild angezeigt.
Kann mir das jemand erklären bzw. sagen was ich falsch mache?
hier mein code....
ich möchte mit Graphics2D ein Bild rotieren (was auch klappt) und das rotierte Bild auf meiner
Platte abspeichern. Die Datei hat zwar die richtigen Maße, jedoch wird nur ein schwarzes Bild angezeigt.
Kann mir das jemand erklären bzw. sagen was ich falsch mache?
hier mein code....
Code:
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
int cx = getWidth() / 2;
int cy = getHeight() / 2;
int imageWidth = img.getWidth(this);
int imageHeight = img.getHeight(this);
int x = -imageWidth / 2;
int y = -imageHeight / 2;
g2.translate(cx, cy);
g2.rotate(rad);
g2.drawImage(img, x, y, this);
// Create an image to save
RenderedImage rendImage = myCreateImage(g2, imageWidth, imageHeight);
// Write generated image to a file
try {
// Save as PNG
File file = new File("newimage.png");
ImageIO.write(rendImage, "png", file);
// Save as JPEG
file = new File("newimage.jpg");
ImageIO.write(rendImage, "jpg", file);
} catch (IOException e) {
}
}
// Returns a generated image.
public RenderedImage myCreateImage(Graphics2D g2, int w, int h) {
// Create a buffered image in which to draw
BufferedImage bufferedImage = new BufferedImage(h, w, BufferedImage.TYPE_INT_RGB);
// Create a graphics contents on the buffered image
g2 = bufferedImage.createGraphics();
// Graphics context no longer needed so dispose it
g2.dispose();
return bufferedImage;
}