Rotering af billede
Nedenstående er min implementering af en metode til at rotere et billede i intervaller af 90 grader. Koden fungerer som den skal, men jeg spekulerer lidt på om ikke det burde kunne gøres "nemmere" - altså med mindre kode. Hele showet med x og y variablen er jeg nået frem til ved at prøve mig frem, da jeg ikke helt forstod det der stod i dokumentationen til AffineTransform ... :-)Nogen der har et bud?
---
BufferedImage img = ImageIO.read(_file);
int w, h, x, y;
switch (_rotation) {
case 90: w = img.getHeight(); h = img.getWidth(); x = w; y = 0; break;
case 180: w = img.getWidth(); h = img.getHeight(); x = w; y = h; break;
case 270: w = img.getHeight(); h = img.getWidth(); x = 0; y = h; break;
default: return null;
}
BufferedImage trans = new BufferedImage(w, h, img.getType());
Graphics2D gfx = trans.createGraphics();
AffineTransform transform = AffineTransform.getTranslateInstance(x, y);
transform.quadrantRotate(_rotation / 90);
gfx.drawRenderedImage(img, transform);
gfx.dispose();
return trans;