java 图像中没有java exif信息息怎么判断方向

java读取JPEG中exif中信息 - 推酷
java读取JPEG中exif中信息
一般的相机会记录一些图片基本信息之外的扩展信息,例如,经纬度信息,存储与exif中,如下图!
一般情况下是java程序读取不到gps等扩展信息的。如果想要解析到里面的信息需要下载一个jar包,metadata-extractor-2.6.4.jar(下载地址:
),这个jar提供了支持获取扩展信息的功能。
具体实现的代码如下:
package com.drew.
import java.io.F
import java.io.IOE
import com.drew.imaging.ImageMetadataR
import com.drew.imaging.ImageProcessingE
public class SampleUsage
* 图片信息获取metadata元数据信息
* @param fileName 需要解析的文件
public ImgInfoBean parseImgInfo (String fileName)
File file = new File(fileName);
ImgInfoBean imgInfoBean =
Metadata metadata = ImageMetadataReader.readMetadata(file);
imgInfoBean = printImageTags(file, metadata);
} catch (ImageProcessingException e) {
System.err.println(&error 1a: & + e);
} catch (IOException e) {
System.err.println(&error 1b: & + e);
return imgInfoB
* 读取metadata里面的信息
* @param sourceFile 源文件
* @param metadata metadata元数据信息
private ImgInfoBean printImageTags(File sourceFile, Metadata metadata)
ImgInfoBean imgInfoBean = new ImgInfoBean ();
imgInfoBean.setImgSize(sourceFile.getTotalSpace());
imgInfoBean.setImgName(sourceFile.getName());
for (Directory directory : metadata.getDirectories()) {
for (Tag tag : directory.getTags()) {
String tagName = tag.getTagName();
String desc = tag.getDescription();
if (tagName.equals(&Image Height&)) {
//图片高度
imgInfoBean.setImgHeight(desc);
} else if (tagName.equals(&Image Width&)) {
//图片宽度
imgInfoBean.setImgWidth(desc);
} else if (tagName.equals(&Date/Time Original&)) {
//拍摄时间
imgInfoBean.setDateTime(desc);
} else if (tagName.equals(&GPS Altitude&)) {
imgInfoBean.setAltitude(desc);
} else if (tagName.equals(&GPS Latitude&)) {
imgInfoBean.setLatitude(pointToLatlong(desc));
} else if (tagName.equals(&GPS Longitude&)) {
imgInfoBean.setLongitude(pointToLatlong(desc));
for (String error : directory.getErrors()){
System.err.println(&ERROR: & + error);
return imgInfoB
* 经纬度转换
度分秒转换
* @param point 坐标点
public String pointToLatlong (String point ) {
Double du = Double.parseDouble(point.substring(0, point.indexOf(&&&)).trim());
Double fen = Double.parseDouble(point.substring(point.indexOf(&&&)+1, point.indexOf(&'&)).trim());
Double miao = Double.parseDouble(point.substring(point.indexOf(&'&)+1, point.indexOf(&\&&)).trim());
Double duStr = du + fen / 60 + miao / 60 / 60 ;
return duStr.toString();
public static void main(String[] args)
ImgInfoBean imgInfoBean = new SampleUsage().parseImgInfo(&C:\\DSC_4564.JPG&);
System.out.println(imgInfoBean.toString());
文件信息bean类。
package com.drew.
public class ImgInfoBean {
private String imgH//图片高度
private String imgW//图片宽度
private String dateT//拍摄时间
private S//海拔
private S//纬度
private S//经度
private Long imgS
//文件大小
private String imgN
//文件名称
public Long getImgSize() {
return imgS
public void setImgSize(Long imgSize) {
this.imgSize = imgS
public String getImgName() {
return imgN
public void setImgName(String imgName) {
this.imgName = imgN
public String getImgHeight() {
return imgH
public void setImgHeight(String imgHeight) {
this.imgHeight = imgH
public String getImgWidth() {
return imgW
public void setImgWidth(String imgWidth) {
this.imgWidth = imgW
public String getDateTime() {
return dateT
public void setDateTime(String dateTime) {
this.dateTime = dateT
public String getAltitude() {
public void setAltitude(String altitude) {
this.altitude =
public String getLatitude() {
public void setLatitude(String latitude) {
this.latitude =
public String getLongitude() {
public void setLongitude(String longitude) {
this.longitude =
public String toString (){
return &[图片信息]文件名称:&+ this.imgName+&
文件大小:&+this.imgSize +&
高度:&+this.imgHeight+&
宽度:&+this.imgWidth+&
拍摄时间:&+this.dateTime+&
海拔:&+this.altitude+&
纬度:&+this.latitude+&
经度:&+this.
通过以上代码就能得到图片中的exif信息。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!评论 - 120
本博客已经搬家到CSDN
http://blog.csdn.net/chenweionline
About Technology
My Favorite Website
积分与排名
阅读排行榜java怎么修改jpg图片的EXIF信息_百度知道
java怎么修改jpg图片的EXIF信息
求java实现图片EXIF信息的读取和修改 ,代码,其实我读取已经解决了,只是读出来乱码,!请重点贴出修改EXIF的代码! 还有请解决下图片添加水印文字后怎么保留EXIF信息。答案满意,悬赏可以提高!
我有更好的答案
有这么一个帖子,看看对你有没有帮助主要在后面,可以稍微往后拉一下!
为您推荐:
其他类似问题
exif信息的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。博客分类:
使用metadata-extractor-2.5.0-RC2.jar
import java.io.F
import java.io.IOE
import java.util.C
import com.drew.imaging.jpeg.JpegMetadataR
import com.drew.imaging.jpeg.JpegProcessingE
import com.drew.metadata.D
import com.drew.metadata.M
import com.drew.metadata.T
import com.drew.metadata.exif.ExifIFD0D
public class Test {
public static void main(String[] args) throws JpegProcessingException, IOException {
File jpegFile = new File("D:\\mydoc\\canon\\\\IMAG0023.jpg");
Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
Directory exif = metadata.getDirectory(ExifIFD0Directory.class);
Collection&Tag& tags = exif.getTags();
for(Tag tag : tags) {
System.out.println(tag.getTagName() + ":" + tag);
运行结果:
Make:[Exif IFD0] Make - HTC
Model:[Exif IFD0] Model - HERO200
X Resolution:[Exif IFD0] X Resolution - 72 dots per inch
Y Resolution:[Exif IFD0] Y Resolution - 72 dots per inch
Resolution Unit:[Exif IFD0] Resolution Unit - Inch
YCbCr Positioning:[Exif IFD0] YCbCr Positioning - Center of pixel array
浏览: 132179 次
来自: 杭州
下载 学习。thanks!
谢谢,先转走.再验证.
谢谢,分享。
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'

我要回帖

更多关于 java 判断图片方向 的文章

 

随机推荐