去下面的网址下载metadata-extractor-2.6.2.jar和xmpcore-5.1.2.jar两个jar包:
https://mvnrepository.com/artifact/com.drewnoakes/metadata-extractor/2.6.2
https://mvnrepository.com/artifact/com.adobe.xmp/xmpcore/5.1.2
经测试,这两个jar包都支持Java 6。下载后导入eclipse项目。
【测试代码】
package test;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import com.drew.imaging.ImageMetadataReader;
import com.drew.imaging.ImageProcessingException;
import com.drew.imaging.jpeg.JpegProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.MetadataException;
import com.drew.metadata.Tag;
public class JPGTest {
public static void main(String[] args) {
test("E:\\用户的文档\\Octopus\\Documents\\WeChat Files\\wxid_z90coebc6md122\\FileStorage\\File\\2024-10\\IMG_20240921_122601_1\\IMG_20240921_122601_1.jpg");
}
private static void test(String filename) {
try {
File file = new File(filename);
Metadata metadata = ImageMetadataReader.readMetadata(file);
Iterable<Directory> directories = metadata.getDirectories();
for (Directory directory : directories) {
String name = directory.getName();
if (name.equals("Exif IFD0")) {
Collection<Tag> tags = directory.getTags();
for (Tag tag : tags) {
name = tag.getTagName();
if (name.equals("Orientation")) {
int type = tag.getTagType();
System.out.println("Tag type: " + type);
int value = directory.getInt(type);
System.out.println("Tag value: " + value);
String desc = tag.getDescription();
System.out.println("Tag description: " + desc);
}
}
}
}
} catch (JpegProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ImageProcessingException e) {
e.printStackTrace();
} catch (MetadataException e) {
e.printStackTrace();
}
}
}
【输出结果】
Tag type: 274
Tag value: 6
Tag description: Right side, top (Rotate 90 CW)
CW代表顺时针方向旋转。 CW是clockwise的缩写,表示顺时针旋转。
CCW代表逆时针方向旋转。 CCW是counterclockwise的缩写,表示逆时针旋转。
Rotate 90 CW表示顺时针旋转90度。