1. 程式人生 > >Java讀取圖片解析度

Java讀取圖片解析度

http://blog.csdn.net/zgs_shmily/article/details/49562031

程式碼依賴於其他工具包,下載請移步:http://download.csdn.net/detail/zhaoguoshuai91/9231957

廢話不多說,直接上程式碼

  1. publicclass ImageInfoUtil {  
  2.     privatestatic Logger log = Logger.getLogger(ImageInfoUtil.class);  
  3.     /** 
  4.      * 獲取單張圖片的全量Info資訊 
  5.      * @param imagePath  圖片的物理路徑
     
  6.      */
  7.     publicstatic  Map<String,String>  getImageInfo(String imagePath){  
  8.         Map<String,String> imageInfo=new HashMap<String,String>();  
  9.         try {  
  10.             File jpegFile = new File(imagePath);  
  11.             if(jpegFile.isFile()){//圖片必須是一個檔案
  12.                 Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);    
  13.                  for(Directory exif:metadata.getDirectories()){  
  14.                      Iterator tags= exif.getTags().iterator();  
  15.                      while (tags.hasNext()) {    
  16.                          Tag tag = (Tag)tags.next();   
  17.                          log.debug("tag:<br/>");  
  18.                          log.debug(tag);  
  19.                          String key=tag.getTagName().trim().replace(" ","");  
  20.                          String val=tag.getDescription().trim().replace(" ","");  
  21.                          imageInfo.put(key, val);  
  22.                      }    
  23.                  }  
  24.             }  
  25.         } catch (Exception e) {  
  26.             e.printStackTrace();  
  27.         }  
  28.         return imageInfo;  
  29.     }  
  30.     /** 
  31.      * 獲取單張圖片指定Info型別的資訊 
  32.      * @param imagePath 圖片的物理路徑 
  33.      * @param direct    Info型別[eg:InfoSubIFDDirectory or PhotoshopDirectory] 
  34.      */
  35.     publicstatic  Map<String,String>  getImageInfo(String imagePath,Class<? extends Directory> direct){  
  36.         Map<String,String> imageInfo=new HashMap<String,String>();  
  37.         try {  
  38.             File jpegFile = new File(imagePath);    
  39.             if(jpegFile.isFile()){  
  40.                 Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);    
  41.                 Directory exif=metadata.getFirstDirectoryOfType(direct);  
  42.                 if(exif!=null){  
  43.                     Iterator tags= exif.getTags().iterator();  
  44.                     while (tags.hasNext()) {    
  45.                         Tag tag = (Tag)tags.next();   
  46.                         log.debug("tag:<br/>");  
  47.                         log.debug(tag);  
  48.                         String key=tag.getTagName().trim().replace(" ","");  
  49.                         String val=tag.getDescription().trim().replace(" ","");  
  50.                         imageInfo.put(key, val);  
  51.                     }    
  52.                 }  
  53.             }  
  54.         } catch (Exception e) {  
  55.             e.printStackTrace();  
  56.         }  
  57.         return imageInfo;  
  58.     }  
  59.     /** 
  60.      * 校驗圖片解析度 
  61.      * @param imagePath    圖片的物理路徑 
  62.      * @param imageHeight  圖片的高 
  63.      * @param imageWidth   圖片的寬 
  64.      */
  65.     publicstaticboolean checkImageResolution(String imagePath,String imageHeight,String imageWidth){  
  66.         Map<String,String> imageInfo=getImageInfo(imagePath);  
  67.         String currentImageHeight=imageInfo.get("ImageHeight").replace("pixels","");  
  68.         String currentImageWidth=imageInfo.get("ImageWidth").replace("pixels","");  
  69.         log.debug("tag:currentImageWidth:"+currentImageWidth+","+"currentImageHeight:"+currentImageHeight);  
  70.         if(imageHeight.equals(currentImageHeight)&&imageWidth.equals(currentImageWidth)){  
  71.             returntrue;  
  72.         }  
  73.         returnfalse;  
  74.     }  
  75. }