Exiv2 照片GPS信息添加
数码相机拍照都有EXIF信息,GPS信息就是加在EXIF里的;
Exiv2是一个开源的项目用来读写照片的EXIF信息,附上官网exiv2/
关于Exiv2和EXIF的介绍网上的资料很多,不在多介绍
结合官方的例子(exiv2/doc/examples),用Qt对Exiv2进行简单的封装实现添加GPS添加和EXIF信息查询
.h文件
pp文件
1 #include "imageanalysis.h" 2 #include<QDebug> 3 #include<iostream> 4 #include<QMessageBox> 5 #include<qmath.h> 6 using namespace std; 7 8 ImageAnalysis::ImageAnalysis(QObject *parent) : QObject(parent),m_imagePath("") 9 11 12 void ImageAnalysis::Reset(const QString &imagePath) 13 24 m_imagePtr>readMetadata(); 25 m_edlear(); 26 m_ed=m_imagePtr>exifData(); 27 } 28 //读取exif信息 29 QString ImageAnalysis::FindExifKey(const QString &key) 30 37 return QString::frLocal8Bit(pos>value().toString().data()); 38 } 39 /// \brief ImageAnalysis::AddExifGPSInfo 添加EXIF GPS信息 40 /// \param keyStr exif key值 Exif.GPSInfo.GPSLongitude 经度 Exif.GPSInfo.GPSLatitude 纬度 Exif.GPSInfo.GPSAltitude 高度 41 /// \param value exif value 42 /// \return 43 bool ImageAnalysis::AddExifGPSInfo(const QString &keyStr,const QString& value) 44 51 else 52 56 std::string _keyStr=keyStr.toLocal8Bit(); 57 std::string _value=tempValue.toLocal8Bit(); 58 Exiv2::ExifKey tmp=Exiv2::ExifKey(_keyStr); 59 Exiv2::ExifData::iterator pos=m_ed.findKey(tmp); 60 //重复判断 61 if (pos == m_ed.end()) 62 69 else//exif有 key 70 81 WriteExifData(); 82 return true; 83 } 84 85 ///把修改的数据写入 86 bool ImageAnalysis::WriteExifData() 87 95 return false; 96 } 97 ///度转度分秒,秒保留小数点后4位 98 QStringList ImageAnalysis::DegreeToDDMMSS(const QString& degree) 99 106 else 107 112 qlist<<dd<<mm<<ss; 113 return qlist; 114 } 115 116 // 根据n的值递归求度,分,秒 117 QString ImageAnalysis::GetDDMMSS(const QString °ree,int n,bool bEnd) 118 127 while (n) 128 134 } 135 ///经纬度转换为EXIF信息 如:113.211 133/1 12/1 396000/10000 136 QString ImageAnalysis::DDMMSSToExivGps(QStringList &strList) 137 143 QString dd,mm,ss; 144 dd=strList.at(0)+"/1 "; 145 mm=strList.at(1)+"/1 "; 146 ss=strList.at(2); 147 ss=AltitudeToExiivGps(ss); 148 return dd+mm+ss; 149 } 150 //数字字符串转化为exif,保留到小数点后四位,39.6转换后396000/10000 151 QString ImageAnalysis::AltitudeToExiivGps(const QString &altitude) 152 158 QString fz,after,front; 159 QStringList tList=altitude.split("."); 160 //小数点前 161 front=tList.at(0); 162 //小数点后,截取前四位 1 after=tList.at(1)+"0000"; 164 after=after.mid(0,4); 165 //整理后的分子 166 fz=front+after; 167 return fz+"/10000"; 168 }后面就是一些目录和文件的操作;
具体的程序如下:
主要功能是读取文件夹目录下的所有照片,读取一个txt文件的内容,其中
txt的格式 经度,纬度,高度如下
上一篇:蔡司激光共聚焦荧光显微镜 (三)
Exiv2
pla文件怎么看,pla文件用什么打开?
pl1文件怎么看,pl1文件用什么打开?
pl文件怎么看,pl文件用什么打开?
pl0文件怎么看,pl0文件用什么打开?
pkt文件怎么看,pkt文件用什么打开?
pkm文件怎么看,pkm文件用什么打开?
pks文件怎么看,pks文件用什么打开?
pka文件怎么看,pka文件用什么打开?
pkh文件怎么看,pkh文件用什么打开?
pkg文件怎么看,pkg文件用什么打开?