Java讀取圖片解析度
阿新 • • 發佈:2019-02-09
http://blog.csdn.net/zgs_shmily/article/details/49562031
程式碼依賴於其他工具包,下載請移步:http://download.csdn.net/detail/zhaoguoshuai91/9231957
廢話不多說,直接上程式碼
- publicclass ImageInfoUtil {
- privatestatic Logger log = Logger.getLogger(ImageInfoUtil.class);
- /**
- * 獲取單張圖片的全量Info資訊
-
* @param imagePath 圖片的物理路徑
- */
- publicstatic Map<String,String> getImageInfo(String imagePath){
- Map<String,String> imageInfo=new HashMap<String,String>();
- try {
- File jpegFile = new File(imagePath);
- if(jpegFile.isFile()){//圖片必須是一個檔案
-
Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
- for(Directory exif:metadata.getDirectories()){
- Iterator tags= exif.getTags().iterator();
- while (tags.hasNext()) {
- Tag tag = (Tag)tags.next();
- log.debug("tag:<br/>");
-
log.debug(tag);
- String key=tag.getTagName().trim().replace(" ","");
- String val=tag.getDescription().trim().replace(" ","");
- imageInfo.put(key, val);
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return imageInfo;
- }
- /**
- * 獲取單張圖片指定Info型別的資訊
- * @param imagePath 圖片的物理路徑
- * @param direct Info型別[eg:InfoSubIFDDirectory or PhotoshopDirectory]
- */
- publicstatic Map<String,String> getImageInfo(String imagePath,Class<? extends Directory> direct){
- Map<String,String> imageInfo=new HashMap<String,String>();
- try {
- File jpegFile = new File(imagePath);
- if(jpegFile.isFile()){
- Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
- Directory exif=metadata.getFirstDirectoryOfType(direct);
- if(exif!=null){
- Iterator tags= exif.getTags().iterator();
- while (tags.hasNext()) {
- Tag tag = (Tag)tags.next();
- log.debug("tag:<br/>");
- log.debug(tag);
- String key=tag.getTagName().trim().replace(" ","");
- String val=tag.getDescription().trim().replace(" ","");
- imageInfo.put(key, val);
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return imageInfo;
- }
- /**
- * 校驗圖片解析度
- * @param imagePath 圖片的物理路徑
- * @param imageHeight 圖片的高
- * @param imageWidth 圖片的寬
- */
- publicstaticboolean checkImageResolution(String imagePath,String imageHeight,String imageWidth){
- Map<String,String> imageInfo=getImageInfo(imagePath);
- String currentImageHeight=imageInfo.get("ImageHeight").replace("pixels","");
- String currentImageWidth=imageInfo.get("ImageWidth").replace("pixels","");
- log.debug("tag:currentImageWidth:"+currentImageWidth+","+"currentImageHeight:"+currentImageHeight);
- if(imageHeight.equals(currentImageHeight)&&imageWidth.equals(currentImageWidth)){
- returntrue;
- }
- returnfalse;
- }
- }