1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public static BufferedImage changeRotateImage(BufferedImage orign, int width, int height,ImageObserver ob) {
double scale;
Dimension src = new Dimension(orign.getWidth(ob),orign.getHeight(ob));
Dimension dest = new Dimension(width,height);
scale = scaleToFit(src,dest);
double w = orign.getWidth(ob) * scale;
double h = orign.getHeight(ob) * scale;
// double w = width;
// double h = height;
// int xRot = orign.getWidth()/2;
// int yRot = orign.getHeight()/2;
int xRot = orign.getWidth();
int yRot = orign.getHeight();
Image scaled = orign.getScaledInstance(width, height,Image.SCALE_SMOOTH);
BufferedImage rotateImage = new BufferedImage((int)w,(int)h,BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = rotateImage.createGraphics();
AffineTransform origXform = g2.getTransform();
AffineTransform newXform = (AffineTransform)(origXform.clone());
//newXform.rotate(Math.toRadians(90.0), xRot/2, yRot/2);
newXform.rotate(Math.toRadians(90.0), xRot/2, yRot/(1.6));
AffineTransformOp op = new AffineTransformOp(newXform, AffineTransformOp.TYPE_BILINEAR);
//g2.setTransform(newXform);
g2.drawImage(scaled,0,0,(int)w,(int)h,ob);
rotateImage = op.filter(rotateImage, null);
//rotateImage = op.filter(orign, null);
g2.dispose();
return rotateImage;
} |
Partager