首先大致说下exif信息。感谢百度百科君~
Exif是一种图象文件格式,它的数据存储与JPEG格式是完全相同的。实际上Exif格式就是在JPEG格式头部插入了数码照片的信息,包括拍摄时的光圈、快门、白平衡、ISO、焦距、日期时间等各种和拍摄条件以及相机品牌、型号、色彩编码、拍摄时录制的声音以及全球定位系统(GPS)、缩略图等。
对于JPG图片处理, 我所用的,都包含在DealExif.cpp中(下载地址在后面给出,也可以在去google),从文件名就能看出,这个文件的内容主要用于处理JPG图片的Exif信息。
完整过程如下:
1.创建EXIFINFO类,接受被读取JPG图片的EXIF信息。然后调用EXIF_Read()方法读取指定路径下JPG图片。
EXIFINFO exifInfo;//创建EXIFINFO类
EXIF_Read(csName, &exifInfo);//读取文件,该方法包含在DealExif中,有两个参数,第一个是JPG文件名。
2.EXIFINFO类中Latitude属性是纬度,Longitude属性是经度。得到的是CString类型,用度分秒表示,如 28 59‘ 17.300000(注意28后面是空格分隔开来)。这显然不方便使用,如果要使用GOOGLE MAP API或者 百度地图 API中的方法,需要的参数经纬度是double型。
3.使用transToDouble方法(是我写的,下面会给出)将exif中读取出来的经度或纬度(CString型 度分秒表示),转化为double型。参数是CString类型的经度或纬度值,返回类型是double型的经度或纬度,如18.52 (度)。
PS:transToDouble()方法不能读到秒的小数点以后,如28 59‘ 17.300000,只能将28 59’ 17 转化出来。,