Java读取图片和EXIF信息
2015-03-17 18:33
246 查看
后台需要读取客户端上传的图片,记录图片长宽,客户端以后就可以根据记录的长宽,展示图片。
正常的图片,读取很简单,代码如下:
但是,有一种情况,客户端拍摄的照片,有可能带方向翻转的,宽大于高的,而是高大于宽。而无论是上面的代码还是直接在windows查看图片,也是得到宽大于高的信息.
用上面直接读宽和高的代码,得到4128X2322,这个数值没有考虑图片翻转方向,所以是有误的。正确的做法,是读取图片的EXIF信息,根据其翻转的角度,确定宽和高。
正常的图片,读取很简单,代码如下:
BufferedImage originalImg = ImageIO.read(file.getInputStream()); int originalwidth = originalImg.getWidth(); //上传图片的宽 int originalheight = originalImg.getHeight(); //上传图片的高
但是,有一种情况,客户端拍摄的照片,有可能带方向翻转的,宽大于高的,而是高大于宽。而无论是上面的代码还是直接在windows查看图片,也是得到宽大于高的信息.
用上面直接读宽和高的代码,得到4128X2322,这个数值没有考虑图片翻转方向,所以是有误的。正确的做法,是读取图片的EXIF信息,根据其翻转的角度,确定宽和高。
Metadata metadata = JpegMetadataReader.readMetadata(file); Directory directory = metadata.getDirectory(ExifDirectory.class); if(directory.containsTag(ExifDirectory.TAG_ORIENTATION)){ // Exif信息中有保存方向,把信息复制到缩略图 int orientation = directory.getInt(ExifDirectory.TAG_ORIENTATION); // 原图片的方向信息 if(6 == orientation || 8 == orientation){//翻转了90°和270°的,长宽对调 int originalwidth = originalImg.getHeight();//上传图片的宽 int originalheight = originalImg.getWidth(); //上传图片的高 } }
相关文章推荐
- java读取图片exif信息
- java读取图片的EXIF信息
- java读取图片的(尺寸、拍摄日期、标记)等EXIF信息
- Java读取图片EXIF信息的方法
- Java读取图片EXIF信息
- java读取图片相关属性信息
- 用C#读取图片的EXIF信息的方法
- 用C#读取图片的EXIF信息的方法(转)
- 读取图片的EXIF信息
- Java 读取 JPEG 文件的 exif 信息
- 用C#读取图片的EXIF信息的方法
- 在WebPart中上传图片到SharePoint图片库,读取Exif信息到图片的自定义属性
- 用C#读取图片的EXIF信息的方法
- 用C#读取(数码相机)图片的EXIF信息 .
- [转]数码照片的JPG文件高级信息(用C#读取图片的EXIF信息)
- 用C#读取图片的EXIF信息的方法(二)
- java获取文件exif信息-添加图片文字水印
- 用C#读取图片的EXIF信息的方法
- 在WebPart中上传图片到SharePoint图片库,读取Exif信息到图片的自定义属性
- 数码照片的JPG文件高级信息(用C#读取图片的EXIF信息)-.NET教程,C#语言