Java解析照片拿到GPS位置数据的详细步骤

目录
  • 1.前提条件
  • 2.代码环境

Java代码逐步解析照片拿到GPS位置数据,附上步骤讲解,附上源代码和jar包依赖

1.前提条件

第一,检查你图片是否是高清原图;
第二,检查你的图片是否来自IPhone设备;
第三,检查你拍照片时,是否打开了GPS;
三者缺一不可

2.代码环境

A:需要的Jar包:

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

B:开发环境

1.maven 引入jar包
2.JDK 1.8
3.windows OS

C:核心代码

import com.drew.imaging.jpeg.JpegMetadataReader;
import com.drew.imaging.jpeg.JpegProcessingException;
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.Iterator;
public class PictureTest {
    public static  void readPic() {
        System.out.println("开始读取图片信息...");
        File jpegFile = new File("18.jpg");
        Metadata metadata;
        try {
            metadata = JpegMetadataReader.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();
                    System.out.println(tag);
                }
            }
            System.out.println("图片信息读取完成!");
        } catch (JpegProcessingException e) {
            e.printStackTrace();
        } catch (IOException e) {
        }
    }
}

D:照片信息提取结果:

开始读取图片信息...
[JPEG] Compression Type - Baseline
[JPEG] Data Precision - 8 bits
[JPEG] Image Height - 3456 pixels
[JPEG] Image Width - 4608 pixels
[JPEG] Number of Components - 3
[JPEG] Component 1 - Y component: Quantization table 0, Sampling factors 2 horiz/2 vert
[JPEG] Component 2 - Cb component: Quantization table 1, Sampling factors 1 horiz/1 vert
[JPEG] Component 3 - Cr component: Quantization table 1, Sampling factors 1 horiz/1 vert
[Exif IFD0] Image Width - 4608 pixels
[Exif IFD0] Image Height - 3456 pixels
[Exif IFD0] Make - OnePlus
[Exif IFD0] Model - ONEPLUS A6010
[Exif IFD0] Orientation - Right side, top (Rotate 90 CW)
[Exif IFD0] X Resolution - 72 dots per inch
[Exif IFD0] Y Resolution - 72 dots per inch
[Exif IFD0] Resolution Unit - Inch
[Exif IFD0] Date/Time - 2019:09:03 10:41:29
[Exif IFD0] YCbCr Positioning - Center of pixel array
[Exif SubIFD] Exposure Time - 1/1445 sec
[Exif SubIFD] F-Number - f/1.7
[Exif SubIFD] Exposure Program - Program normal
[Exif SubIFD] ISO Speed Ratings - 100
[Exif SubIFD] Exif Version - 2.20
[Exif SubIFD] Date/Time Original - 2019:09:03 10:41:29
[Exif SubIFD] Date/Time Digitized - 2019:09:03 10:41:29
[Exif SubIFD] Components Configuration - YCbCr
[Exif SubIFD] Shutter Speed Value - 1/1444 sec
[Exif SubIFD] Aperture Value - f/1.7
[Exif SubIFD] Brightness Value - 3.9
[Exif SubIFD] Exposure Bias Value - 0 EV
[Exif SubIFD] Max Aperture Value - f/1.7
[Exif SubIFD] Metering Mode - Center weighted average
[Exif SubIFD] White Balance - Unknown
[Exif SubIFD] Flash - Flash did not fire, auto
[Exif SubIFD] Focal Length - 4.3 mm
[Exif SubIFD] Sub-Sec Time - 260556
[Exif SubIFD] Sub-Sec Time Original - 260556
[Exif SubIFD] Sub-Sec Time Digitized - 260556
[Exif SubIFD] FlashPix Version - 1.00
[Exif SubIFD] Color Space - sRGB
[Exif SubIFD] Exif Image Width - 4608 pixels
[Exif SubIFD] Exif Image Height - 3456 pixels
[Exif SubIFD] Sensing Method - (Not defined)
[Exif SubIFD] Scene Type - Directly photographed image
[Exif SubIFD] Exposure Mode - Auto exposure
[Exif SubIFD] White Balance Mode - Auto white balance
[Exif SubIFD] Focal Length 35 - 25 mm
[Exif SubIFD] Scene Capture Type - Standard
[Interoperability] Interoperability Index - Recommended Exif Interoperability Rules (ExifR98)
[Interoperability] Interoperability Version - 1.00
[GPS] GPS Latitude Ref - N
[GPS] GPS Latitude - 30° 18' 31.31"
[GPS] GPS Longitude Ref - E
[GPS] GPS Longitude - 120° 20' 36.31"
[GPS] GPS Altitude Ref - Sea level
[GPS] GPS Altitude - 0 metres
[GPS] GPS Time-Stamp - 02:41:28.000 UTC
[GPS] GPS Processing Method - CELLID
[GPS] GPS Date Stamp - 2019:09:03
[Exif Thumbnail] Exif Image Width - 320 pixels
[Exif Thumbnail] Exif Image Height - 240 pixels
[Exif Thumbnail] Compression - JPEG (old-style)
[Exif Thumbnail] Orientation - Right side, top (Rotate 90 CW)
[Exif Thumbnail] X Resolution - 72 dots per inch
[Exif Thumbnail] Y Resolution - 72 dots per inch
[Exif Thumbnail] Resolution Unit - Inch
[Exif Thumbnail] Thumbnail Offset - 1104 bytes
[Exif Thumbnail] Thumbnail Length - 38449 bytes
[XMP] XMP Value Count - 5
[Huffman] Number of Tables - 4 Huffman tables
[File] File Name - 18.jpg
[File] File Size - 7027316 bytes
[File] File Modified Date - 星期二 九月 03 10:55:39 +08:00 2019
图片信息读取完成!

有意义的信息截取:

[GPS] GPS Latitude Ref - N                  
[GPS] GPS Latitude - 30° 18' 31.31"       维度
[GPS] GPS Longitude Ref - E
[GPS] GPS Longitude - 120° 20' 36.31"    经度
[GPS] GPS Altitude Ref - Sea level
[GPS] GPS Altitude - 0 metres
[GPS] GPS Time-Stamp - 02:41:28.000 UTC   拍摄时间
[GPS] GPS Processing Method - CELLID
[GPS] GPS Date Stamp - 2019:09:03                拍摄时间

[Exif IFD0] Make - OnePlus              设备信息
[Exif IFD0] Model - ONEPLUS A6010   设备型号

根据经纬度查询结果:

原文链接和源码下载地址 原文链接:https://www.cnblogs.com/haha12/p/11451009.html
GPS位置查询链接:http://www.gpsspg.com/maps.htm
经纬度格式转化链接:http://www.minigps.net/fc.html
代码下载地址:[源码地址]http://xiazai.jb51.net/202203/yuanma/ImageInfoScratch_jb51.rar

到此这篇关于Java解析照片拿到GPS位置数据的文章就介绍到这了,更多相关Java照片GPS内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java使用randomaccessfile在文件任意位置写入数据

    复制代码 代码如下: import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.RandomAccessFile; public class InsertContent {    public static void insert(String fileName, long pos, String inse

  • javaweb实现百度GPS定位接口(经纬度)

    百度web GPS定位(经纬度) 注册账号及配置地址 http://lbsyun.baidu.com/apiconsole/key 主类 BaiduWebAPI import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import

  • Java解析照片拿到GPS位置数据的详细步骤

    目录 1.前提条件 2.代码环境 Java代码逐步解析照片拿到GPS位置数据,附上步骤讲解,附上源代码和jar包依赖 1.前提条件 第一,检查你图片是否是高清原图:第二,检查你的图片是否来自IPhone设备;第三,检查你拍照片时,是否打开了GPS:三者缺一不可 2.代码环境 A:需要的Jar包: <dependency> <groupId>com.drewnoakes</groupId> <artifactId>metadata-extractor</

  • Java实现企业微信消息推送功能的详细步骤

    第一步:申请企业微信注册企业(链接:https://work.weixin.qq.com/nl/sem/registe?s=c&from=1011017189&bd_vid=11628667012427618020) 第二步:登录自己的企业微信找到应用管理———>添加应用 第三步:获取到应用的AgentId.Secret.企业id 第四步,准备代码编写: model层代码: package com.toone.itop.formula.function.inte.model; /**

  • MySQL数据库通过Binlog恢复数据的详细步骤

    目录 Mysql Binlog 简介 开启Binlog 使用Binlog恢复数据 附录 总结 Mysql Binlog 简介 Mysql Binlog是二进制格式的日志文件Binlog是用来记录Mysql内部对数据库的改动(只记录对数据的修改操作),主要用于数据库的主从复制以及增量恢复 开启Binlog 查看是否打开了Binlog [ON表示已经打开 OFF表示关闭 默认关闭状态] show variables like ‘%log_bin%’; 开启Binlog [修改完以后重启服务] 方法1

  • vue使用vue-json-viewer展示JSON数据的详细步骤

    目录 1.下载 2.引入并全局注册 3.组件内使用 4.一点使用技巧.心得 5.修改编辑的样式,使其符合项目需求 总结 1.下载 npm下载: // Vue2 npm install vue-json-viewer@2 --save // Vue3 npm install vue-json-viewer@3 --save yarn下载: // Vue2 yarn add vue-json-viewer@2 // Vue3 yarn add vue-json-viewer@3 2.引入并全局注册

  • 用javascript实现无刷新更新数据的详细步骤 asp

    程序设计中会经常碰到一种情况,就是事先无法得知用户会需要哪些数据,必须根据用户选择后再从服务器重新提取数据后反馈给用户.比如一简单的情况,用户选择省份以后,我们立即会在市里边将这个省的所有市重新显示出来.这种情况一般需要将整个页面刷新后才可以重新读取,但这样不仅效率不高外,也显得不太优雅.其实用javascript结合微软件的XMLHTTP对象,我们可以不用刷新,"稍稍"的就可以将数据从服务器上读取出来,显得既专业,又高效. 下面我们就以一个验证用户是否被注册的情况来演示这种技术. 

  • java调用FFmpeg实现视屏压缩功能的详细步骤

    目录 前言 实现步骤 一.在windows系统中下载对应的FFmpeg 二.FFmpeg压缩视屏命令 三.java实现FFmpeg命令调用 注意事项 1.文件名 2.视屏参数 前言 最近做人脸识别,对于过大的视屏(10M)以上,识别失败的几率比较大.找了下相关的视屏压缩资料.首先使用的是jave进行视屏压缩,但是踩坑失败,jave中有转码的过程,虽然压缩成功,各种压缩参数也调整了一大堆,但是在识别时,几乎都不会成功,但是只是压缩观看的话,还是可以使用jave的.继续踩坑,直接使用原生的FFmpe

  • Mysql通过ibd文件恢复数据的详细步骤

    恢复步骤 1.创建数据库(随意创建) 2.创建数据表(备注:表结构要和要恢复的表结构一致,row_format要和ibd文件的row_format一致,否则,会提示两者不一致. 当前row_format=dynamic) 3.表的属性查看 我们使用:show table status like ‘matlab’\G,查看表的属性 备注:创建表时候的row_format和表属性的不一致,基于innodb是,要把row_format设置成dynamic时,需要修改mysql的全局配置,直接在myql

  • ORACLE大批量插入数据的详细步骤

    目录 尝试了一下几种方式: 一.关闭日志,数据追加模式 二:PARALLEL模式(并行进程数要谨慎 ) 总结 最近有几张表随着时间不断的增长,表中的数据量也越来越大,想把原来的表改成分区表,需要两个步骤: 一:建立分区表 二:把源表的数据迁移到分区表中 但是源表的数据量是1亿的数据量,按照最普遍的方式 INSERT INTO 效率太低了 尝试了一下几种方式: 一.关闭日志,数据追加模式 1.关闭表日志功能 ALTER  TABLE  TABLE_NAME  NOLOGGING; comments

  • Java解析word,获取文档中图片位置的方法

    前言(背景介绍): Apache POI是Apache基金会下一个开源的项目,用来处理office系列的文档,能够创建和解析word.excel.ppt格式的文档. 其中对word文档的处理有两个技术,分别是HWPF(.doc)和XWPF(.docx).如果你对这两个技术熟悉的话,就应该能明白使用java解析word文档的痛楚所在. 其中两个最大的问题在于: 第一是这两个类并没有统一的父类和接口(隔壁的XSSF和HSSF投过来鄙视的眼光),所以没法进行同一格式的接口式编程: 第二是官方API中并

  • android通过gps获取定位的位置数据和gps经纬度

    复制代码 代码如下: package com.action.android_test;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.

随机推荐