No Data

java获取文件详细信息 java获取EXIF信息

原创  作者:斩雪碎光阴  发布于:2023年05月30日  阅读量:144
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
  分类:  标签:

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;
    }
}


相关文章