Java 遍历文件下jpg图片并解析图片
- package filetest;
- import java.io.File;
- import java.io.FilenameFilter;
- import java.io.IOException;
- import java.util.ArrayList;
- 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;
- /**
- * 文件的迭代输出
- * 寻找某文件下以“.jpg”结尾的文件
- * 并解析该图片
- * */
- class MyFilenameFilter implements FilenameFilter{
- public boolean accept(File dir, String name){
- return name.endsWith(".jpg")
- || new File(name).isDirectory();
- }
- }
- public class FileTest {
- public static ArrayList<String> fiList = new ArrayList<String>();
- public static int count = 0;
- public static void main(String[] agrs) throws JpegProcessingException, IOException{
- File filePath = new File("E://psresource/Root");
- String[] nameStrings = filePath.list(new MyFilenameFilter());
- for(String name : nameStrings){
- count++;
- File file = new File("E://psresource/Root/" + name);
- fiList.add(file.getAbsolutePath());
- File jpegFile = new File(file.getAbsolutePath());
- try{
- Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
- for(Directory directory : metadata.getDirectories()){
- for(Tag tag : directory.getTags()){
- System.out.println(file + "的tag信息为: " +tag);
- }
- }
- }catch(JpegProcessingException e){
- System.out.println("%%%%%%%%%%%%%%%%%"+jpegFile.getAbsolutePath());
- if(jpegFile.delete()){
- System.out.println(jpegFile.getAbsolutePath() + "已经被删除");
- }
- e.printStackTrace();
- }
- //System.out.println(Integer.toString(count) + file.getAbsolutePath());
- }
- //System.out.println(Integer.toString(count) + "所有的图片的名字:" + fiList.toString());
- }
- }
- 图片的操作:
- 解析图片,需要两个包metadata-extractor-2.6.4.jar ,但是修改图片的EXIF信息,还要导入另一个jar包:mediautil-1.0.jar
图片的操作:
解析图片,需要两个包metadata-extractor-2.6.4.jar ,但是修改图片的EXIF信息,还要导入另一个jar包:mediautil-1.0.jar
- package exiftest;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.Iterator;
- import mediautil.image.jpeg.Entry;
- import mediautil.image.jpeg.Exif;
- import mediautil.image.jpeg.LLJTran;
- import mediautil.image.jpeg.LLJTranException;
- import net.sf.json.JSONObject;
- import com.drew.imaging.jpeg.JpegMetadataReader;
- import com.drew.metadata.Directory;
- import com.drew.metadata.Metadata;
- import com.drew.metadata.Tag;
- /**
- * 测试用于读取图片的EXIF信息
- * @author Winter Lau
- */
- public class Exiftest {
- /**
- * 经纬度转换 度分秒转换
- * @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();
- }
- public static void main(String[] args) throws Exception {
- //File jpegFile = new File("E:\\psresource\\img\\photos\\images\\20140627_140048.jpg");
- File jpegFile = new File("E:\\psresource\\img\\photos\\wwd\\iphone\\20140521.jpg");
- Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
- JSONObject jsonObject = new JSONObject();
- Double lat = null;
- Double lon=null;
- Date date = null;
- for(Directory directory : metadata.getDirectories()){
- for(Tag tag : directory.getTags()){
- System.out.println(tag);
- String tagname = tag.getTagName();
- if(tagname.equals("GPS Longitude")){
- System.out.println(pointToLatlong(tag.getDescription()));
- lon = Double.valueOf(pointToLatlong(tag.getDescription()));
- jsonObject.accumulate("lon", lon);
- }
- else if (tagname.equals("GPS Latitude")) {
- System.out.println(pointToLatlong(tag.getDescription()));
- lat = Double.valueOf(pointToLatlong(tag.getDescription()));
- jsonObject.accumulate("lat", lat);
- }
- if(tagname.equals("Date/Time")){
- System.out.println(tag.getDescription());
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd hh:mm:ss");
- Date date2 = sdf.parse(tag.getDescription());
- Long dateLong = date2.getTime();
- jsonObject.accumulate("time", dateLong);
- }
- }
- System.out.println(jsonObject.toString());
- }
- }
- }
Java 遍历文件下jpg图片并解析图片的更多相关文章
- JAVA 遍历文件夹下的所有文件
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...
- JAVA 遍历文件夹下的所有文件(递归调用和非递归调用)
JAVA 遍历文件夹下的所有文件(递归调用和非递归调用) 1.不使用递归的方法调用. public void traverseFolder1(String path) { int fileNum = ...
- java 遍历文件夹里的文件
Java遍历文件夹的2种方法: A.不使用递归: import java.io.File; import java.util.LinkedList; public class FileSystem { ...
- PHP遍历目录下的文件夹和文件 以及遍历文件下内容
1.遍历目录下的文件夹和文件: public function bianli1($dir) { $files = array(); if($head = opendir($dir)) { while( ...
- Java遍历文件夹下的所以文件
利用Java递归遍历文件夹下的所以文件,然后对文件进行其他的操作.如:对文件进行重命名,对某一类文件进行重编码.可以对某一工程下的全部.java文件进行转码成utf-8等 代码如下,这里只对文件进行重 ...
- Java遍历目录下全部文件并替换指定字符串
应用场景:比方有一个深层次的文件目录结构,如:javaAPI 每一个文件中面都有同样的内容,而我们要统一改动为其它内容.上千个文件假设一个个改动显得太不明智. import java.io.Buffe ...
- JAVA 遍历文件夹下的所有文件(递归调用)
package file; import java.io.File; public class Test1 { public static void main(String[] args) { Str ...
- JAVA 遍历文件夹下文件并更改文件名称
周末因为一些原因,需要批量更改一些文件的名称,使其随机,就随手写了点代码. 增加一个随机字母: public static void changeName(String path){ File fil ...
- Java 遍历文件夹里面的全部文件、指定文件
Java 手册 listFiles public File[] listFiles(FileFilter filter) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件 ...
随机推荐
- 最受欢迎的8位Java大师
面是8位Java牛人,他们为Java社区编写框架.产品.工具或撰写书籍改变了Java编程的方式. P.S 以下排名纯属个人喜好. 1. Tomcat & Ant创始人 James Duncan ...
- 图片延迟加载技术-Lazyload的应用
我们在浏览图片量非常大的页面时,像淘宝商城商品展示.必应图片搜索这类网站,图片的加载非常流畅,其中就应用了图片延迟加载技术.本文讲解Lazyload图片加载插件,当我们打开页面时,首先在屏幕可视区域加 ...
- JAVA装饰器模式
Java程序员们应该对java.io对不会陌生,因为java.io包采用了装饰器模式. 一.定义: Decorator装饰器,顾名思义,就是动态地给一个对象添加一些额外的职责,就好比为房子进行装修一样 ...
- js 小练习之indexOf
闲来无事~ 写点小练习 function zz(arr, item) { var a=arr.join("") var b=a.indexOf(item) alert(b) } z ...
- javascript事件:获取事件对象getEvent函数
在javascript开发中我们会经常获取页面中的事件对象,然后来处理这些事件,例如下面的getEvent函数就是获取javascript下的页面事件对象. function getEvent(eve ...
- org.springframework.transaction.CannotCreateTransactionException: Could not open Hibernate Session
出错原因很简单:数据库服务没开,自然就打不开Session了.
- HTTP POST和GET的区别[转]
http://www.cppblog.com/woaidongmao/archive/2008/05/29/51476.aspx 1.HTTP 只有POST和GET 两种命令模式: 2.POST是被设 ...
- 项目中怎么去掉tomcat的猫
其实很简单,需要在登录页和显示内容的主页,将自己的favicon.ico 导入,并在登录页和主页将其引入即可. 例如: 接着在登录页引入 <link rel="shortcut ic ...
- Selenium自动化测试(java语言)
Selenium介绍 Selenium 1.0 包含 core. IDE. RC. grid 四部分, selenium 2.0 则是在两位大牛偶遇相互沟通决定把面向对象结构化( OOPP) 和便于 ...
- MFC CArchive实现保存到二进制文件
先看一下效果图 BOOL Save2File() { BOOL bOpenFileDialog = FALSE; ---------------------------------- ① BOOL b ...