Java 遍历文件下jpg图片并解析图片
1 package filetest; 2 3 import java.io.File; 4 import java.io.FilenameFilter; 5 import java.io.IOException; 6 import java.util.ArrayList; 7 8 import com.drew.imaging.jpeg.JpegMetadataReader; 9 import com.drew.imaging.jpeg.JpegProcessingException; 10 import com.drew.metadata.Directory; 11 import com.drew.metadata.Metadata; 12 import com.drew.metadata.Tag; 13 /** 14 * 文件的迭代输出 15 * 寻找某文件下以“.jpg”结尾的文件 16 * 并解析该图片 17 * */ 18 19 class MyFilenameFilter implements FilenameFilter{ 20 public boolean accept(File dir, String name){ 21 return name.endsWith(".jpg") 22 || new File(name).isDirectory(); 23 } 24 } 25 26 27 public class FileTest { 28 public static ArrayList<String> fiList = new ArrayList<String>(); 29 public static int count = 0; 30 31 32 33 public static void main(String[] agrs) throws JpegProcessingException, IOException{ 34 35 File filePath = new File("E://psresource/Root"); 36 String[] nameStrings = filePath.list(new MyFilenameFilter()); 37 for(String name : nameStrings){ 38 count++; 39 40 File file = new File("E://psresource/Root/" + name); 41 fiList.add(file.getAbsolutePath()); 42 File jpegFile = new File(file.getAbsolutePath()); 43 try{ 44 Metadata metadata = JpegMetadataReader.readMetadata(jpegFile); 45 46 for(Directory directory : metadata.getDirectories()){ 47 for(Tag tag : directory.getTags()){ 48 49 System.out.println(file + "的tag信息为: " +tag); 50 } 51 } 52 }catch(JpegProcessingException e){ 53 System.out.println("%%%%%%%%%%%%%%%%%"+jpegFile.getAbsolutePath()); 54 if(jpegFile.delete()){ 55 System.out.println(jpegFile.getAbsolutePath() + "已经被删除"); 56 } 57 58 e.printStackTrace(); 59 } 60 61 //System.out.println(Integer.toString(count) + file.getAbsolutePath()); 62 63 } 64 //System.out.println(Integer.toString(count) + "所有的图片的名字:" + fiList.toString()); 65 } 66 67 68 69 70 } 71 72 73 图片的操作: 74 75 76 77 解析图片,需要两个包metadata-extractor-2.6.4.jar ,但是修改图片的EXIF信息,还要导入另一个jar包:mediautil-1.0.jar 78 79 View Code
图片的操作:
解析图片,需要两个包metadata-extractor-2.6.4.jar ,但是修改图片的EXIF信息,还要导入另一个jar包:mediautil-1.0.jar
1 package exiftest; 2 3 import java.io.BufferedInputStream; 4 import java.io.BufferedOutputStream; 5 import java.io.File; 6 import java.io.FileInputStream; 7 import java.io.FileOutputStream; 8 import java.io.InputStream; 9 import java.io.InputStreamReader; 10 import java.io.OutputStream; 11 import java.text.SimpleDateFormat; 12 import java.util.Date; 13 import java.util.Iterator; 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 import mediautil.image.jpeg.Entry; 31 import mediautil.image.jpeg.Exif; 32 import mediautil.image.jpeg.LLJTran; 33 import mediautil.image.jpeg.LLJTranException; 34 import net.sf.json.JSONObject; 35 36 import com.drew.imaging.jpeg.JpegMetadataReader; 37 import com.drew.metadata.Directory; 38 import com.drew.metadata.Metadata; 39 import com.drew.metadata.Tag; 40 41 /** 42 * 测试用于读取图片的EXIF信息 43 * @author Winter Lau 44 */ 45 public class Exiftest { 46 47 /** 48 * 经纬度转换 度分秒转换 49 * @param point 坐标点 50 * @return 51 */ 52 public static String pointToLatlong (String point ) { 53 Double du = Double.parseDouble(point.substring(0, point.indexOf("°")).trim()); 54 Double fen = Double.parseDouble(point.substring(point.indexOf("°")+1, point.indexOf("\'")).trim()); 55 Double miao = Double.parseDouble(point.substring(point.indexOf("\'")+1, point.indexOf("\"")).trim()); 56 Double duStr = du + fen / 60 + miao / 60 / 60 ; 57 return duStr.toString(); 58 } 59 public static void main(String[] args) throws Exception { 60 //File jpegFile = new File("E:\\psresource\\img\\photos\\images\\20140627_140048.jpg"); 61 File jpegFile = new File("E:\\psresource\\img\\photos\\wwd\\iphone\\20140521.jpg"); 62 Metadata metadata = JpegMetadataReader.readMetadata(jpegFile); 63 64 65 66 JSONObject jsonObject = new JSONObject(); 67 68 Double lat = null; 69 Double lon=null; 70 Date date = null; 71 for(Directory directory : metadata.getDirectories()){ 72 for(Tag tag : directory.getTags()){ 73 System.out.println(tag); 74 75 String tagname = tag.getTagName(); 76 if(tagname.equals("GPS Longitude")){ 77 System.out.println(pointToLatlong(tag.getDescription())); 78 lon = Double.valueOf(pointToLatlong(tag.getDescription())); 79 jsonObject.accumulate("lon", lon); 80 } 81 else if (tagname.equals("GPS Latitude")) { 82 System.out.println(pointToLatlong(tag.getDescription())); 83 lat = Double.valueOf(pointToLatlong(tag.getDescription())); 84 jsonObject.accumulate("lat", lat); 85 } 86 if(tagname.equals("Date/Time")){ 87 System.out.println(tag.getDescription()); 88 SimpleDateFormat sdf = new SimpleDateFormat("yyyy:MM:dd hh:mm:ss"); 89 90 Date date2 = sdf.parse(tag.getDescription()); 91 Long dateLong = date2.getTime(); 92 jsonObject.accumulate("time", dateLong); 93 94 } 95 } 96 System.out.println(jsonObject.toString()); 97 } 98 99 100 } 101 }