java讀取JPEG中exif中資訊
一般的相機會記錄一些圖片基本資訊之外的擴充套件資訊,例如,經緯度資訊,儲存與exif中,如下圖!
一般情況下是java程式讀取不到gps等擴充套件資訊的。如果想要解析到裡面的資訊需要下載一個jar包,metadata-extractor-2.6.4.jar(下載地址:http://code.google.com/p/metadata-extractor/),這個jar提供了支援獲取擴充套件資訊的功能。
具體實現的程式碼如下:
[java] view plaincopyprint?- package com.drew.metadata;
- import java.io.File;
- import
- import com.drew.imaging.ImageMetadataReader;
- import com.drew.imaging.ImageProcessingException;
- publicclass SampleUsage
- {
- /**
- * 圖片資訊獲取metadata元資料資訊
- * @param fileName 需要解析的檔案
- * @return
- */
- public ImgInfoBean parseImgInfo (String fileName)
- {
- File file = new File(fileName);
- ImgInfoBean imgInfoBean = null;
- try {
- Metadata metadata = ImageMetadataReader.readMetadata(file);
- imgInfoBean = printImageTags(file, metadata);
- } catch (ImageProcessingException e) {
- System.err.println("error 1a: "
- } catch (IOException e) {
- System.err.println("error 1b: " + e);
- }
- return imgInfoBean;
- }
- /**
- * 讀取metadata裡面的資訊
- * @param sourceFile 原始檔
- * @param metadata metadata元資料資訊
- * @return
- */
- private ImgInfoBean printImageTags(File sourceFile, Metadata metadata)
- {
- ImgInfoBean imgInfoBean = new ImgInfoBean ();
- imgInfoBean.setImgSize(sourceFile.getTotalSpace());
- imgInfoBean.setImgName(sourceFile.getName());
- for (Directory directory : metadata.getDirectories()) {
- for (Tag tag : directory.getTags()) {
- String tagName = tag.getTagName();
- String desc = tag.getDescription();
- if (tagName.equals("Image Height")) {
- //圖片高度
- imgInfoBean.setImgHeight(desc);
- } elseif (tagName.equals("Image Width")) {
- //圖片寬度
- imgInfoBean.setImgWidth(desc);
- } elseif (tagName.equals("Date/Time Original")) {
- //拍攝時間
- imgInfoBean.setDateTime(desc);
- } elseif (tagName.equals("GPS Altitude")) {
- //海拔
- imgInfoBean.setAltitude(desc);
- } elseif (tagName.equals("GPS Latitude")) {
- //緯度
- imgInfoBean.setLatitude(pointToLatlong(desc));
- } elseif (tagName.equals("GPS Longitude")) {
- //經度
- imgInfoBean.setLongitude(pointToLatlong(desc));
- }
- }
- for (String error : directory.getErrors()){
- System.err.println("ERROR: " + error);
- }
- }
- return imgInfoBean;
- }
- /**
- * 經緯度轉換 度分秒轉換
- * @param point 座標點
- * @return
- */
- public 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();
- }
- publicstaticvoid main(String[] args)
- {
- ImgInfoBean imgInfoBean = new SampleUsage().parseImgInfo("C:\\DSC_4564.JPG");
- System.out.println(imgInfoBean.toString());
- }
- }
檔案資訊bean類。
[java] view plaincopyprint?- package com.drew.metadata;
- publicclass ImgInfoBean {
- private String imgHeight ;//圖片高度
- private String imgWidth ;//圖片寬度
- private String dateTime ;//拍攝時間
- private String altitude ;//海拔
- private String latitude;//緯度
- private String longitude ;//經度
- private Long imgSize; //檔案大小
- private String imgName; //檔名稱
- public Long getImgSize() {
- return imgSize;
- }
- publicvoid setImgSize(Long imgSize) {
- this.imgSize = imgSize;
- }
- public String getImgName() {
- return imgName;
- }
- publicvoid setImgName(String imgName) {
- this.imgName = imgName;
- }
- public String getImgHeight() {
- return imgHeight;
- }
- publicvoid setImgHeight(String imgHeight) {
- this.imgHeight = imgHeight;
- }
- public String getImgWidth() {
- return imgWidth;
- }
- publicvoid setImgWidth(String imgWidth) {
- this.imgWidth = imgWidth;
- }
- public String getDateTime() {
- return dateTime;
- }
- publicvoid setDateTime(String dateTime) {
- this.dateTime = dateTime;
- }
- public String getAltitude() {
- return altitude;
- }
- publicvoid setAltitude(String altitude) {
- this.altitude = altitude;
- }
- public String getLatitude() {
- return latitude;
- }
- publicvoid setLatitude(String latitude) {
- this.latitude = latitude;
- }
- public String getLongitude() {
- return longitude;
- }
- publicvoid setLongitude(String longitude) {
- this.longitude = longitude;
- }
- public String toString (){
- return"[圖片資訊]檔名稱:"+ this.imgName+" 檔案大小:"+this
相關推薦
java讀取JPEG中exif中資訊
一般的相機會記錄一些圖片基本資訊之外的擴充套件資訊,例如,經緯度資訊,儲存與exif中,如下圖! 一般情況下是java程式讀取不到gps等擴充套件資訊的。如果想要解析到裡面的資訊需要下載一個jar包,metadata-extractor-2.6.4.jar(下載地址:http://code.google.
Java讀取並匯出Word中的表格(Excel),匯出檔案為Excel
看公司的同事很費勁的在一條一條地從Word中的表格複製貼上到Excel, 我從網上找個兩個demo給合在了一起,幫他解決了問題。最下方有原始碼。 一個兩個類 第一個: package com.wbs.test; import java.io.FileInputStream
java讀取txt目標檔案中的資料列印到控制檯
package demo2; import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; impor
Java 讀取Word文字框中的文字/圖片/表格
Word可插入文字框,文字框中可嵌入文字、圖片、表格等內容。對文件中的已有文字框,也可以讀取其中的內容。本文以Java程式程式碼來展示如何讀取文字框,包括讀取文字框中的文字、圖片以及表格等。 【程式環境】 程式編輯環境為IntelliJ IDEA,並在程式中引入了free Spire.Doc.jar,安裝的J
JPEG影象EXIF資料資訊的解析
剛剛結束本科生活的我,那會還比較頹廢,但是因為讀研,導致寶寶七月初就到了學校,來了以後也不知道該做什麼,就出去浪呀~哈哈,不料來了不久後接到老師的任務,讓寶寶把JPEG影象的EXIF資訊解讀出來,當時內心OS大抵是:什麼?老師說了什麼?當時對於EXIF完全陌生,沒有一點概念,寶寶在百度之後,也是比較
java 讀取圖片的 Exif 資料
包的下載地址: package com.imgread; import com.drew.metadata.*;import com.drew.metadata.exif.*;import com.drew.imaging.jpeg.JpegProcessingExcep
java:通過javadoc API讀取java原始碼中的註釋資訊(comment)
如何從java原始碼中讀取註釋資訊?(注意不是指通過反射讀取annotation類,是comment,就是程式設計師在原始碼中加的註釋) 比如: /** * 使用當前類的class loader載入工具物件 * @param
java後臺讀取配置文件中key與value -----demo
undle ltm string 文件名 logs 配置 rip conf 返回值 public class ResourcesUtils { /* * @description:根據屬性獲取文件名 * * @param:propertyName文件的
java讀取Excel表格中的數據
bubuko str 需求 equal read sta alt 表格 nbsp 1、需求 用java代碼讀取hello.xls表格中的數據 2、hello.xls表格 3、java代碼 package com.test; import java.io.File;
scala/java讀取項目中的文件
AC lin tin inf alt 位置 -cp 分號 res 一、獲取jar包的位置 1.使用類路徑 String path = this.getClass().getProtectionDomain().getCodeSource().getLocation().
springBoot 讀取配置檔案yml中的資訊
yml中自定義一些變數 var: analyze_url: test ocr_url: test microsoft_key: test 對映到類變數中 @Getter @Component public class varModel { @Value("${var.
java讀取excel檔案內容,並將讀取到的內容寫入到另一檔案中
需要匯入的jar包下載地址https://pan.baidu.com/s/16cTpUfx0KvKkbGYkXAUKMA 程式碼:ReadExcel.java //信1605-3 20163432 張運濤 package domain; import java.io.File; im
java讀取excel文件內容,並將讀取到的內容寫入到另一文件中
dom tst trace 一個 讀取excel domain ble write 做出 需要導入的jar包下載地址https://pan.baidu.com/s/16cTpUfx0KvKkbGYkXAUKMA 代碼:ReadExcel.java //信1605-3 2
Java架構-SOA中springmvc中restful服務動態重新整理token資訊
因為要考慮服務端token的動態重新整理,而且還要單獨啟動定時排程任務去重新整理token資訊,保證token的時效及安全問題,直接分享動態重新整理token的程式碼: Java程式碼 我這邊會將近期研發的spring cloud微服務雲架構的搭建過程和精髓記
【轉】java中輸出異常資訊
做java開發的時候,經常會遇到程式碼拋異常後,需要把異常資訊儲存到資料庫或者上傳到雲伺服器做cache分析。這時候就需要獲取異常的堆疊資訊(詳細錯誤資訊)。 有的人用e.getMessage()來獲取異常資訊,但是這樣獲取到的資訊內容並不全,而且有時候為空。我們可以用下面方法來獲取。 
java 上傳圖片至本地 並讀取圖片在網頁中顯示
java 上傳圖片至本地 並讀取圖片在網頁中顯示 程式碼+圖片如下所示 一、程式碼 @Controller public class ImageController { private static Logger logger = LoggerFactory.getLogge
java 讀取jar包中的檔案
參考: https://blog.csdn.net/rchm8519/article/details/39557499 參考: https://www.cnblogs.com/zeciiii/p/4178824.html 需求: 我自己寫了一個Java 的記事本工具,然後實現
java讀取專案中src/main/resources 資原始檔夾下的路徑
今天在開發的時候遇到了一個問題,手動寫一個連結到redis,然後本來用的是springboot 自動讀取的src/main/resources下的application.yml檔案,所以就想直接也去讀取裡面的redis的ip的值(這兒是手動寫一個連線到redis,為什麼不用s
Java 讀取字串中字元的個數
以“aaabbbccsdlfhhk”為例 要求輸出樣式為a(3)b(3)… import java.util.Iterator; import java.util.Map; import java.util.TreeMap; public class Demo
Java Servlet實現檔案上傳並讀取Zip壓縮包中檔案的真實型別
1.上傳檔案servlet PS: 使用ant.jar中的 org.apache.tools.zip.ZipEntry 物件,防止亂碼 package com.chenl.servlets; import java.io.File; import java.io.IOExcep