其实这不算原创了,只是把别人的代码做了下整理,方便同样需要的朋友直接使用了。:)
原文请见这里 。
package myclass;
import java.awt.*;
import java.awt.image.*;
import java.awt.image.*;
import java.awt.geom.AffineTransform;
public class myImg {
public static BufferedImage rotateImg( BufferedImage image, int degree, Color bgcolor ){
int iw = image.getWidth();//原始图象的宽度
int ih = image.getHeight();//原始图象的高度
int w=0;
int h=0;
int x=0;
int y=0;
degree=degree%360;
if(degree<0)degree=360+degree;//将角度转换到0-360度之间
double ang=degree* 0.0174532925;//将角度转为弧度
/**
*确定旋转后的图象的高度和宽度
*/
if(degree == 180|| degree == 0 || degree == 360){
w = iw;
h = ih;
}else if(degree == 90|| degree == 270){
w = ih;
h = iw;
}else{
int d=iw+ih;
w=(int)(d*Math.abs(Math.cos(ang)));
h=(int)(d*Math.abs(Math.sin(ang)));
}
x = (w/2)-(iw/2);//确定原点坐标
y = (h/2)-(ih/2);
BufferedImage rotatedImage=new BufferedImage(w,h,image.getType());
Graphics gs=rotatedImage.getGraphics();
gs.setColor(bgcolor);
gs.fillRect(0,0,w,h);//以给定颜色绘制旋转后图片的背景
AffineTransform at=new AffineTransform();
at.rotate(ang,w/2,h/2);//旋转图象
at.translate(x,y);
AffineTransformOp op=new AffineTransformOp(at,AffineTransformOp.TYPE_NEAREST_NEIGHBOR);
op.filter(image, rotatedImage);
image=rotatedImage;
return image;
}
}
使用:image=myclass.myImg.rotateImg(image,45,Color.white);