cool hit counter Gettheimagefile(s)someinformations,IncludingtheMake,Model,Date/Time,etc_Intefrankly

Gettheimagefile(s)someinformations,IncludingtheMake,Model,Date/Time,etc


This is a blog about how to get the image file(s) some informations.Including the Make,Model,Date/Tiime,etc.

while,how can do it? I should use a tool which name is :Exif,writed by Java,and now its version is 2.6.4.

and you can get more from the here. or osChina

How does it work?

while,I hava a demo and I will show the complete code to you.

  1 /**
  2  * 
  3  */
  4 package com.b510.test;
  5 
  6 import java.io.File;
  7 import java.io.IOException;
  8 import java.util.ArrayList;
  9 import java.util.Collection;
 10 import java.util.HashMap;
 11 import java.util.Iterator;
 12 import java.util.List;
 13 import java.util.Map;
 14 
 15 import com.drew.imaging.jpeg.JpegMetadataReader;
 16 import com.drew.imaging.jpeg.JpegProcessingException;
 17 import com.drew.metadata.Directory;
 18 import com.drew.metadata.Metadata;
 19 import com.drew.metadata.Tag;
 20 import com.drew.metadata.exif.ExifIFD0Directory;
 21 /**
 22  * only handle the "jpeg" format image file(s)<br>
 23  * <a href="https://drewnoakes.com/code/exif/">Get more about the Exif>></a>
 24  * @author Hongten
 25  * @date 2013-12-20
 26  */
 27 public class ExifTester {
 28     
 29     //separating character
 30     public static final String LINE = "-";
 31     public static final String RIGHT_PARENTHESES = "]";
 32     
 33     
 34     public static void main(String[] args) throws Exception {
 35         //if you want to run this code.you should be rewrite the following array of String.
 36         //and be sure the correct path of the image file
 37         String[] pathNames = { 
 38                 "C:/2013-02-08_12-24-54_100.jpg",//motorola ME865
 39                 "C:/20022013011.jpg",//nokia 6700s
 40                 "C:/IMG_0018.JPG",//download from web site
 41                 "C:/IMG_0697.JPG", //ipad4
 42                 "C:/P1080402.JPG"//Panasonic DMC-LX5
 43                 };
 44         List<File> files = new ArrayList<File>();
 45         for (String pathname : pathNames) {
 46             File file = new File(pathname);
 47             files.add(file);
 48         }
 49         List<Map<String, String>> imagesInfo = getImageInfoOfExif(files);
 50         printImagesInfo(imagesInfo);
 51         //Get the image file informations
 52         File file = new File("C:/IMG_0697.JPG");
 53         Map<String, String> map = getImageInfoOfExif(file);
 54         System.out.println("##### the image file informations");
 55         HandleMap(map);
 56      }
 57 
 58     /**
 59      * print the abstracts of image file 
 60      * @param imagesInfo
 61      */
 62     private static void printImagesInfo(List<Map<String, String>> imagesInfo) {
 63         if(!imagesInfo.isEmpty()){
 64             for(Map<String, String> map: imagesInfo){
 65                 HandleMap(map);
 66                 System.out.println("======================================");
 67             }
 68         }
 69     }
 70 
 71     /**
 72      * @param map
 73      */
 74     private static void HandleMap(Map<String, String> map) {
 75         Iterator<String> iterator = map.keySet().iterator();
 76         while (iterator.hasNext()) {
 77             String name = iterator.next();
 78             String value = map.get(name);
 79             printInfo(name, value);
 80         }
 81     }
 82 
 83     /**
 84      * @param name
 85      * @param value
 86      */
 87     private static void printInfo(String name, String value) {
 88         System.out.println(name + " : " + value);
 89     }
 90 
 91     /**
 92      * get the abstracts of the image file
 93      * @param jpegFile
 94      * @return
 95      * @throws JpegProcessingException
 96      * @throws IOException
 97      */
 98     @SuppressWarnings("unchecked")
 99     private static Map<String, String> getImageInfoOfExif(File jpegFile) throws JpegProcessingException, IOException {
100         Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
101         Directory exifDirectory = metadata.getDirectory(ExifIFD0Directory.class);
102         Collection tags = exifDirectory.getTags();
103         Iterator iterator = tags.iterator();
104         Map<String, String> abstractsMap = new HashMap<String, String>();
105         while (iterator.hasNext()) {
106             Tag tag = (Tag) iterator.next();
107             String[] tagArrays = tag.toString().split(LINE);
108             String[] abstracts = tagArrays[0].trim().split(RIGHT_PARENTHESES);
109             abstractsMap.put(abstracts[1].trim(), tagArrays[1].trim());
110         }
111         return abstractsMap;
112     }
113     
114     /**
115      * handle more than one image files
116      * @param files
117      * @return
118      * @throws JpegProcessingException
119      * @throws IOException
120      */
121     private static List<Map<String, String>> getImageInfoOfExif(List<File> files) throws JpegProcessingException, IOException{
122         if(files == null)return null;
123         List<Map<String, String>> list = new ArrayList<Map<String,String>>();
124         if(files.size() > 0){
125             for(File file: files){
126                 Map<String, String> map = getImageInfoOfExif(file);
127                 list.add(map);
128             }
129         }
130         return list;
131     }
132 }

and the output as following:

Date/Time : 2013:02:08 12:24:53
Model : ME865
X Resolution : 72 dots per inch
YCbCr Positioning : Center of pixel array
Resolution Unit : Inch
Y Resolution : 72 dots per inch
Make : Motorola
======================================
Orientation : Top, left side (Horizontal / normal)
Model : 6700s
X Resolution : 300 dots per inch
YCbCr Positioning : Center of pixel array
Resolution Unit : Inch
Y Resolution : 300 dots per inch
Make : Nokia
======================================
Orientation : Top, left side (Horizontal / normal)
X Resolution : 72 dots per inch
YCbCr Positioning : Center of pixel array
Resolution Unit : Inch
Y Resolution : 72 dots per inch
======================================
Software : 6.1.3
Date/Time : 2013:06:27 23:31:19
Orientation : Right side, top (Rotate 90 CW)
Model : iPad
X Resolution : 72 dots per inch
YCbCr Positioning : Center of pixel array
Resolution Unit : Inch
Y Resolution : 72 dots per inch
Make : Apple
======================================
Software : Ver.1.0
Unknown tag (0xc4a5) : [208 bytes]
Model : DMC
Orientation : Top, left side (Horizontal / normal)
YCbCr Positioning : Datum point
Unknown tag (0xc6d3) : [128 bytes]
Date/Time : 2013:01:04 00:01:06
X Resolution : 180 dots per inch
Unknown tag (0xc6d2) : [64 bytes]
Resolution Unit : Inch
Artist : 
Y Resolution : 180 dots per inch
Make : Panasonic
======================================
##### the image file informations
Software : 6.1.3
Date/Time : 2013:06:27 23:31:19
Orientation : Right side, top (Rotate 90 CW)
Model : iPad
X Resolution : 72 dots per inch
YCbCr Positioning : Center of pixel array
Resolution Unit : Inch
Y Resolution : 72 dots per inch
Make : Apple

it work and the output is so cool.

then, you should have a try!


Recommended>>
1、SASThings about date processing
2、Todays project fun walk IWC daily walk to make money register a number 30 days can earn 180 yuan
3、Huaweis new 40megapixel triplecamera P11 renders revealed
4、Financial Editor Midway Network
5、Redis 50rc2 4010 and 3212 released fixes security issues

    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号