获取照片exif信息

需要jar包metadata-extractor


import com.drew.imaging.ImageMetadataReader;
import com.drew.imaging.ImageProcessingException;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import com.drew.metadata.Tag;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

/*
@author   Nian
@Date     2022/8/9 22:25
@purpose  from a image get it information of exif
          
@Note     use jar:metadata-extractor-2.12.0.jar
*/
public class GetImgExifInfo {
    public static void main(String[] args) {
        try {
            Map<String, String> info = getInfo("D:" + File.separator + "test.jpg");
            printImgInfo(info);
        } catch (ImageProcessingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static Map<String, String> getInfo(String path) throws ImageProcessingException, IOException {
        HashMap<String, String> hashMap = new HashMap<>();
        File file = new File(path);
        Metadata metadata = ImageMetadataReader.readMetadata(file);
        for (Directory directory : metadata.getDirectories()) {
            System.out.println(directory.getName());
            for (Tag tag : directory.getTags()) {
//                System.out.println("directory.getName() = " + directory.getName());
//                System.out.println("tag.getTagName() = " + tag.getTagName());
//                System.out.println("tag.getTagType() = " + tag.getTagType());
//                System.out.println("tag.getDescription() = " + tag.getDescription());
//                System.out.println("tag.getTagTypeHex() = " + tag.getTagTypeHex());
//                System.out.println("tag.getDirectoryName() = " + tag.getDirectoryName());
//                System.out.format("%s - %s : %s\n", directory.getName(),tag.getTagName(),tag.getDescription());
                hashMap.put(tag.getTagName(), tag.getDescription());
            }
            if (directory.hasErrors()) {
                System.out.println(directory.getErrors());
            }
        }
        return hashMap;
    }

    public static void printImgInfo(Map<String, String> map) {
        String[] strings = new String[]{"Compression", "Image Width", "Image Height", "Make", "Model", "Software",
                "GPS Version ID", "GPS Latitude", "GPS Longitude", "GPS Altitude", "GPS Time-Stamp", "GPS Date Stamp",
                "ISO Speed Ratings", "Exposure Time", "Exposure Mode", "F-Number", "Focal Length 35", "Color Space", "File Source", "Scene Type"};
        String[] names = new String[]{"压缩格式", "图像宽度", "图像高度", "拍摄手机", "型号", "手机系统版本号",
                "gps版本", "经度", "纬度", "高度", "UTC时间戳", "gps日期",
                "iso速率", "曝光时间", "曝光模式", "光圈值", "焦距", "图像色彩空间", "文件源", "场景类型"};
        for (int i = 0; i < strings.length; i++) {
            if (map.containsKey(strings[i])) {
                System.out.println(names[i] + "  " + strings[i] + " : " + map.get(strings[i]));
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

念犯困

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值