1.引入依赖
<!-- 图片信息读取 -->
<dependency>
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.18.0</version>
</dependency>
2.代码实现
import com.drew.imaging.ImageMetadataReader;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
/**
* java获取文件信息 获取文件详细信息 获取EXIF信息
*/
public class EXIF {
public static void main(String[] args) throws Exception {
// File file1 = new File("D:\\资料\\xxx.JPG");
// File file1 = new File("D:\\资料\\xxx.png");
File file1 = new File("D:\\资料\\视频导入\\xxx.mp4");
getInfo(file1);
}
/**
* 获取文件详细信息
*/
public static boolean getInfo(File jpegFile) {
try {
Metadata metadata = ImageMetadataReader.readMetadata(jpegFile);
Iterator<Directory> it = metadata.getDirectories().iterator();
while (it.hasNext()) {
Directory exif = it.next();
Iterator<Tag> tags = exif.getTags().iterator();
while (tags.hasNext()) {
Tag tag = (Tag) tags.next();
String tagStr=tag.toString();
// System.out.println(tagStr);
if(tagStr.contains("[GPS] GPS Longitude - ")){
String longitudeStr=tagStr.replace("[GPS] GPS Longitude - ","");
longitudeStr=longitudeStr.replace(" ","");
System.out.println("经度:"+tranformPos(longitudeStr));
}
if(tagStr.contains("[GPS] GPS Latitude - ")){
String latitudeStr=tagStr.replace("[GPS] GPS Latitude - ","");
latitudeStr=latitudeStr.replace(" ","");
System.out.println("纬度:"+tranformPos(latitudeStr));
}
if(tagStr.contains("[GPS] GPS Altitude - ")){
String altitudeStr=tagStr.replace("[GPS] GPS Altitude - ","");
altitudeStr=altitudeStr.replace(" metres","");
System.out.println("高度:"+altitudeStr);
}
if(tagStr.contains("Date/Time Original")){
String shootingTimeStr=tagStr.replace("[Exif SubIFD] Date/Time Original - ","");
System.out.println("拍摄时间:"+shootingTimeStr);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy:MM:dd hh:mm:ss");
Date date=sdf.parse(shootingTimeStr);
// System.out.println(date);
}
if(tagStr.contains("[JPEG] Image Width")||tagStr.contains("[PNG-IHDR] Image Width")){
String imageWidthStr=tagStr.substring(tagStr.lastIndexOf("-")+2).replace(" pixels","");
System.out.println("图片宽度:"+imageWidthStr);
}
if(tagStr.contains("[JPEG] Image Height")||tagStr.contains("[PNG-IHDR] Image Height")){
String imageHeightStr=tagStr.substring(tagStr.lastIndexOf("-")+2).replace(" pixels","");
System.out.println("图片高度:"+imageHeightStr);
}
if(tagStr.contains("[MP4 Video] Width")){
String videoWidthStr=tagStr.replace("[MP4 Video] Width - ","").replace(" pixels","");
System.out.println("视频宽度:"+videoWidthStr);
}
if(tagStr.contains("[MP4 Video] Height")){
String videoHeightStr=tagStr.replace("[MP4 Video] Height - ","").replace(" pixels","");
System.out.println("视频高度:"+videoHeightStr);
}
if(tagStr.contains("File Size")){
String fileSizeStr=tagStr.replace("[File] File Size - ","");
System.out.println("文件大小:"+fileSizeStr);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public static Double tranformPos(String lng){
String[] lntArr = lng
.trim()
.replace("°", ";")
.replace("′", ";")
.replace("'", ";")
.replace("\"", "")
.split(";");
Double result = 0D;
for (int i = lntArr.length; i >0 ; i--) {
double v = Double.parseDouble(lntArr[i-1]);
if(i==1){
result=v+result;
}else{
result=(result+v)/60;
}
}
return result;
}
}