package img;
import javax.imageio.ImageIO;
import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
public class main {
public static void main(String[] args) throws Exception {
// 读取图片
BufferedImage bufImage = ImageIO.read(new File("F:\\Files\\javaFile\\Image\\src\\img\\OrignImg.jpg"));
rotateImage(bufImage,35);
System.out.println("Successfully!");
}
public static void rotateImage(BufferedImage image,double degree) throws Exception {
degree=Math.toRadians(360-degree);
int w = image.getWidth();
int h = image.getHeight();
int new_w=(int) Math.ceil(Math.abs(w*Math.cos(degree)) + Math.abs(h*Math.sin(degree)));
int new_h=(int) Math.ceil(Math.abs(h*Math.cos(degree)) + Math.abs(w*Math.sin(degree)));
BufferedImage rotImg= new BufferedImage(new_w,new_h,BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < new_w; x++) {
for (int y = 0; y < new_h; y++) {
int x1= (int) Math.round(x*Math.cos(degree)+y*Math.sin(degree)-0.5*new_w*Math.cos(degree)-0.5*new_h*Math.sin(degree)+0.5*w);
int y1= (int) Math.round(-x*Math.sin(degree)+y*Math.cos(degree)+0.5*new_w*Math.sin(degree)-0.5*new_h*Math.cos(degree)+0.5*h);
if(x1>=0&&x1<w&&y1>=0&&y1<h) {
rotImg.setRGB(x, y, image.getRGB(x1, y1));
}else {
rotImg.setRGB(x, y, new Color(255, 255, 255).getRGB());
}
}
}
// 把修改过的 rotImg 保存到本地
ImageIO.write(rotImg, "JPEG", new File("F:\\Files\\javaFile\\Image\\src\\img\\rot.jpg"));
}
}
实现效果