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) 返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件 ...
随机推荐
- 我终于解决UM编辑器了 泪......
气死我了..... 好不容易测试好了....更显得我笨了..... 原来....什么都不用改 只改了2个小位置....真的是.....回首自己 不敢看 0.0 OK 记下步骤 以免以后忘记 将 ...
- Java基础笔记-面向对象2
构造函数:(当类中没有定义构造函数时,系统会默认给该类加入一个空参数的构造函数) 格式: class Person { Person(){} //空参数 } 1.函数名与类名相同, 2,不定义返回值类 ...
- CAD创建不规则形状视口
选择CAD模型空间中多段线,在指定的布局中创建视口,方法如下: /// <summary> /// 创建视口 /// </summary> /// <param name ...
- js 判断字符串中是否有某字符串
<script> var test=['<div class="cur"></div>','<div class="cur&qu ...
- 搭建C#框架 博文观感
最近刚开始着手做项目,在后期开发的时候遇到不少预期之外的问题,而且工期也超出预算不少.反思了一下,主要是做的项目少,前期需求分析不明朗,当然对于框架也没有意识.凡此种种.当然,遇到问题就要去想办法解决 ...
- MFC CListCtrl得到ctrl,shift多选的行号
vector<int> selVect; int count = m_consumeList.GetItemCount(); //你的列表多少行 for (int i = 0; i< ...
- Docker基本概念填坑
Docker的基本概念填坑 Docker的基本概念填坑 1. Docker的基本组成 Docker Client客户端 Docker Daemon守护进程 Docker Image镜像 Docker ...
- js返回值
看下js变量.作用域.内存文档. 1. <script type="text/javascript"> function c(){ return 23; } var a ...
- js私有化属性
我们先来看一个例子: var Demo1 = function(val){ this.value = val; this.getValue = function(){ return this.valu ...
- 编写一个程序实现strcat函数的功能
写自己的strcat函数------→mycat #include <stdio.h> #include <string.h> #define N 5 char *mycat( ...