旋转图片 0 90 180 -90
public static void convertImage(String srcPath,String outPath,int angle) {
BufferedImage originalImage = ImageIO.read(new File(srcPath))
//矢量化
int xOffNum=0
int yOffNum=0
int height = 0
int width = 0
//构造数据
List<PixelMessage> original=new ArrayList<>()
for (int x = originalImage.getMinX()
for (int y = originalImage.getMinY()
int rgb = originalImage.getRGB(x, y)
PixelMessage pixelMessage=new PixelMessage()
pixelMessage.setX(x)
pixelMessage.setY(originalImage.getHeight()-1-y)
pixelMessage.setValue(rgb)
original.add(pixelMessage)
}
}
int cosValue=0
int sinValue=0
if(angle==0){
cosValue=1
sinValue=0
height=originalImage.getHeight()
width=originalImage.getWidth()
}else if(angle==90){
cosValue=0
sinValue=1
xOffNum=0
yOffNum=originalImage.getWidth()-1
height=originalImage.getWidth()
width=originalImage.getHeight()
}else if(angle==-90){
cosValue=0
sinValue=-1
xOffNum=originalImage.getHeight()-1
yOffNum=0
height=originalImage.getWidth()
width=originalImage.getHeight()
}else{
cosValue=-1
sinValue=0
xOffNum=originalImage.getWidth()-1
yOffNum=originalImage.getHeight()-1
height=originalImage.getHeight()
width=originalImage.getWidth()
}
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB)
for(PixelMessage pixelMessage:original){
int x0=pixelMessage.getX()*cosValue+pixelMessage.getY()*sinValue+xOffNum
int y0=pixelMessage.getY()*cosValue-pixelMessage.getX()*sinValue+yOffNum
bufferedImage.setRGB(x0,height-1-y0,pixelMessage.getValue())
}
ImageIO.write(bufferedImage, "jpg", new File(outPath))
}