java 判断图片否旋转_java获取图片朝向并旋转
时间: 2023-12-17 10:05:39 浏览: 99
Java可以通过读取图片的EXIF信息来判断图片的朝向,并进行旋转。EXIF是指嵌入在图片中的元数据,其中包含了拍摄设备、拍摄时间、拍摄参数等信息。
以下是获取图片朝向并旋转的Java代码示例:
```java
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javaxt.io.Image;
public class ImageOrientation {
public static void main(String[] args) throws IOException {
File file = new File("image.jpg");
BufferedImage image = ImageIO.read(file);
// 获取图片的EXIF信息
Image.Orientation orientation = new Image(file).getOrientation();
// 根据图片朝向进行旋转
switch (orientation) {
case TOP_LEFT:
break;
case TOP_RIGHT:
image = rotate(image, 180);
break;
case BOTTOM_RIGHT:
image = rotate(image, 180);
break;
case BOTTOM_LEFT:
image = rotate(image, 180);
break;
case LEFT_TOP:
image = rotate(image, 90);
break;
case RIGHT_TOP:
image = rotate(image, -90);
break;
case RIGHT_BOTTOM:
image = rotate(image, 90);
break;
case LEFT_BOTTOM:
image = rotate(image, -90);
break;
}
// 保存旋转后的图片
ImageIO.write(image, "jpg", new File("rotated_image.jpg"));
}
// 旋转图片
public static BufferedImage rotate(BufferedImage image, int degree) {
int w = image.getWidth();
int h = image.getHeight();
int type = image.getColorModel().getTransparency();
BufferedImage result = new BufferedImage(w, h, type);
Graphics2D graphics = result.createGraphics();
graphics.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
graphics.rotate(Math.toRadians(degree), w / 2, h / 2);
graphics.drawImage(image, 0, 0, null);
graphics.dispose();
return result;
}
}
```
该代码中,首先读取图片文件并获取其EXIF信息,然后根据其朝向进行旋转,最后保存旋转后的图片。其中,`javaxt.io.Image`是一个第三方库,用于获取图片的EXIF信息。
阅读全文