JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

java读取照片信息

wys521 2024-11-25 10:56:49 精选教程 28 ℃ 0 评论

在项目中遇到需要从照片中读取经纬度等信息(因为照片是大疆无人机拍摄,所以照片信息中含有经纬度等信息)。

引入依赖

Bash
<dependency>
<groupId>com.drewnoakes</groupId>
<artifactId>metadata-extractor</artifactId>
<version>2.11.0</version>
</dependency>

编写解析代码工具类

Bash
public static void main(String[] args) throws Exception{
File file = new File("D:\\DJI_0066.JPG");
printImageTags(file);
}
/**
* 读取照片里面的信息
*/
private static void readPicture(File file) throws Exception{
Metadata metadata = ImageMetadataReader.readMetadata(file);
for (Directory directory : metadata.getDirectories()) {
for (Tag tag : directory.getTags()) {
String tagName = tag.getTagName(); //标签名
String desc = tag.getDescription(); //标签信息
if (tagName.equals("Image Height")) {
System.out.println("图片高度: "+desc);
} else if (tagName.equals("Image Width")) {
System.out.println("图片宽度: "+desc);
} else if (tagName.equals("Date/Time Original")) {
System.out.println("拍摄时间: "+desc);
}else if (tagName.equals("GPS Latitude")) {
System.err.println("纬度 : "+desc);
// System.err.println("纬度(度分秒格式) : "+pointToLatlong(desc));
} else if (tagName.equals("GPS Longitude")) {
System.err.println("经度: "+desc);
// System.err.println("经度(度分秒格式): "+pointToLatlong(desc));
}
}
}
}
/**
* 经纬度格式 转换为 度分秒格式 ,如果需要的话可以调用该方法进行转换
* @param point 坐标点
* @return
*/
public static String pointToLatlong (String point ) {
Double du = Double.parseDouble(point.substring(0, point.indexOf("°")).trim());
Double fen = Double.parseDouble(point.substring(point.indexOf("°")+1, point.indexOf("'")).trim());
Double miao = Double.parseDouble(point.substring(point.indexOf("'")+1, point.indexOf("\"")).trim());
Double duStr = du + fen / 60 + miao / 60 / 60 ;
return duStr.toString();
}
}

运行结果如下

图片高度: 3648 pixels
图片宽度: 5472 pixels
图片宽度: 5472 pixels
图片高度: 3648 pixels
拍摄时间: 2020:07:21 09:03:30
纬度 : 31° 58' 24.41"
经度: 118° 48' 11.97"
图片宽度: 160 pixels
图片高度: 112 pixels

经纬度转换之后

纬度 : 31° 58' 24.41"
纬度(度分秒格式) : 31.97344722222222
经度: 118° 48' 11.97"
经度(度分秒格式): 118.803325

这时候发现图片的高度和宽度出现好多次,这里我后来只取了第一次的信息。

代码截图如下

看完觉得还不错可以关注一下!欢迎转发,点赞!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表