通常有些场景 我们通过一张图片就可以获取图片的拍摄地点。这个是如何做到呢?

可交换图像文件格式常被简称为Exif(Exchangeable image file format),是专门为数码相机的照片设定的,可以记录数码照片的属性信息和拍摄数据。

对就是拿到它。如果我们在拍摄图片时将 拍摄地的经纬度 写入到EXif中,生成图片。如果需要是可以读取的。也有一些图片带有经纬度。

//读取

NSDictionary *dic =    [self getExifInfoWithImageData: UIImageJPEGRepresentation(image, 1.0)];

- (NSMutableDictionary *)getExifInfoWithImageData:(NSData *)imageData{

CGImageSourceRef cImageSource = CGImageSourceCreateWithData((__bridge CFDataRef)imageData, NULL);

NSDictionary *dict =  (NSDictionary *)CFBridgingRelease(CGImageSourceCopyPropertiesAtIndex(cImageSource, 0, NULL));

NSMutableDictionary *dictInfo = [NSMutableDictionary dictionaryWithDictionary:dict];

return dictInfo;

}

读取结果:

{

    ColorModel = RGB;

    Depth = 8;

    Orientation = 6;

    PixelHeight = 960;

    PixelWidth = 1280;

    ProfileName = "sRGB IEC61966-2.1";

    "{Exif}" =     {

        ColorSpace = 1;

        PixelXDimension = 1280;

        PixelYDimension = 960;

    };

    "{JFIF}" =     {

        DensityUnit = 0;

        JFIFVersion =         (

            1,

            0,

            1

        );

        XDensity = 72;

        YDensity = 72;

    };

    "{TIFF}" =     {

        Orientation = 6;

    };

}

当然这张图没有添加经纬度。我是通过获取系统相册里面图片拿到的。

//修改 EXif 既然可以修改就可以添加了;

/*

* 仅支持JPEG格式

*/

-(NSMutableData *)setExifInfoWithImageData:(NSData *)imageNSData{

CGImageSourceRef imgSource = CGImageSourceCreateWithData((__bridge_retained CFDataRef)imageNSData, NULL);

NSDictionary *metadata = (__bridge NSDictionary *)CGImageSourceCopyPropertiesAtIndex(imgSource, 0, NULL);

NSMutableDictionary *metadataAsMutable = [metadata mutableCopy];

NSMutableDictionary *EXIFDictionary = [[metadataAsMutable objectForKey:(NSString *)kCGImagePropertyExifDictionary] mutableCopy];

if (EXIFDictionary==nil) {

EXIFDictionary = [[NSMutableDictionary alloc] init];

}

[EXIFDictionary setObject:@"666666"

forKey:(NSString *)kCGImagePropertyExifUserComment];

[metadataAsMutable setObject:EXIFDictionary forKey:(NSString *)kCGImagePropertyExifDictionary];

NSLog(@"Info: %@",metadataAsMutable);

CFStringRef UTI = CGImageSourceGetType(imgSource);

NSMutableData *newImageData = [NSMutableData data];

CGImageDestinationRef destination = CGImageDestinationCreateWithData((__bridge CFMutableDataRef)newImageData, UTI, 1, NULL);

if(!destination)

NSLog(@"***创建 失败***");

CGImageDestinationAddImageFromSource(destination, imgSource, 0, (__bridge CFDictionaryRef) metadataAsMutable);

BOOL success = NO;

success = CGImageDestinationFinalize(destination);

if(!success)

NSLog(@"***保存 失败***");

return newImageData;

}

写入后结果   UserComment = 666666; 

{

    ColorModel = RGB;

    Depth = 8;

    Orientation = 6;

    PixelHeight = 2448;

    PixelWidth = 3264;

    ProfileName = "sRGB IEC61966-2.1";

    "{Exif}" =     {

        ColorSpace = 1;

        PixelXDimension = 3264;

        PixelYDimension = 2448;

        UserComment = 666666;

    };

    "{JFIF}" =     {

        DensityUnit = 0;

        JFIFVersion =         (

            1,

            0,

            1

        );

        XDensity = 72;

        YDensity = 72;

    };

    "{TIFF}" =     {

        Orientation = 6;

    };

}

//几篇有关于Exif的博客:

// https://www.jianshu.com/p/a542751d4ba3

//  https://blog.csdn.net/qyh791414379/article/details/52153782

//  https://blog.csdn.net/MouXiaoxiong/article/details/52922116

关于图片的EXif(通过图片获取经度)相关推荐

  1. C# 获取图片的EXIF 信息

    关于 EXIF 信息的介绍. 1  EXIF,是英文Exchangeable Image File(可交换图像文件)的缩写.EXIF是一种图像文件格式,只是文件的后缀名为jpg.EXIF信息是由数码相 ...

  2. php exif信息,php通过exif_read_data函数获取图片的exif信息

    php获取图片的exif信息,php自带一个exif_read_data函数可以用来读取图片的exif信息,代码来自php手册 echo "test1.jpg: \n"; $exi ...

  3. JS获取图片的EXIF信息+纠正图片方向

    前端图片处理碰到的一个离奇 bug , 关于图片的 EXIF 信息,特地记录下来 . 然后使用一下代码可以获取Orientation信息,并纠正Orientation带来的图片旋转问题 // from ...

  4. 获取图片的EXIF信息如此困难?

    对于数码相机所拍摄出的图片,Exif信息非常重要.Exif是英语Exchangeable Image File(可交换图像文件)的缩写,最初由日本电子工业发展协会(JEIDA --Japan Elec ...

  5. php exif信息,php通过exif_read_data函数获取图片的exif信息_php技巧

    php获取图片的exif信息,php自带一个exif_read_data函数可以用来读取图片的exif信息,代码来自php手册 \n"; $exif = exif_read_data('te ...

  6. js获取图片的EXIF,解决图片旋转问题

    相信大家在做项目的时候会遇到在canvas里加入图片时,图片发生90°,180°的旋转.当时的你肯定时懵逼的,为毛. 其实这就是图片的EXIF搞的鬼. 什么是EXIF 简单来说,Exif 信息就是由数 ...

  7. php exif信息,php通过exif_read_data函数获取图片的exif信息 PHP

    php获取图片的exif信息,php自带一个exif_read_data函数可以用来读取图片的exif信息,代码来自php手册 echo 'test1.jpg: \n'; $exif = exif_r ...

  8. android照片添加gps,如何利用Exif为图片文件添加GPS坐标信息

    今天主要给大家分享一个知识点--如何利用Exif为图片文件添加GPS坐标信息,关于这个知识点网上的资料很多,而且这个知识点本身应该是不难的,但是当我在项目使用时却遇到了一个问题:在读取某个图片的坐标信 ...

  9. python 通过图片(原图)精确获取图片拍摄的位置,时间,设备等信息

    想要悄悄的获取某人的位置,只需通过她拍摄的照片,就能可以实现.此方法需要用到识别图片元数据的库.这里操作是在虚拟机ubuntu上,使用python最好是在3.6及以上. pip3 install ex ...

最新文章

  1. 一些通讯知识、TCP/IP、三次握手四次分手(正确的图,网上很多错了)、HTTP\HTTPS、DNS、UDP
  2. 条款10 令operator=返回一个reference to *this
  3. 使用Callable和Future接口创建线程
  4. Go语言实例化结构体——为结构体分配内存并初始化
  5. 三年程序猿的实战开发经验之谈-做人做事建议
  6. 盖茨发文谈如何实现零碳目标 称看好电动车未来
  7. [JavaWeb-JDBC]JDBC_快速入门_idea jdbc连接Mysql数据库
  8. 怎么设置internet才能下载JAVA_如何使用Java从Internet下载和保存文件?
  9. bzoj 1217 [HNOI2003]消防局的设立 贪心
  10. 早上内部资源共享讨论发言稿
  11. WPF中如何选择合适的元数据标记?(英文)
  12. 《菜菜的机器学习sklearn课堂,孔浩Java视频百度云盘
  13. 鸿蒙系统 安卓碎片化,鸿蒙系统讲解决安卓碎片化问题,4G流畅度媲美12G!
  14. 浪潮存储通过ISCSI映射至Linux服务器、多路径配置方法
  15. 网易有道词典bug记录
  16. cron 每隔3天_crontab实现每隔多少天执行一次脚本的两种方法
  17. linux nvme文件系统,Intel NVMe驱动器扇区大小不是4096的xfs文件系统的性能下降
  18. 学习C语言的相关网站(C学习资料)
  19. 语义解析(一) —— 概述(数据和模型简介)
  20. Java基本类型转换

热门文章

  1. 【图像分类骨干网络】AlexNet
  2. 【NOI2014】起床困难综合症 解题报告
  3. 微信小程序tab导航+滚动顶部吸附效果(开发实例)
  4. Hyperledger Fabric 超级账本实战项目(一、二)
  5. for语句中break运用
  6. android 充电模式deamon_安兔兔公布6月Android手机性价比排行榜
  7. 微信小程序获取用户唯一标识OpenID
  8. 图形编程和机器人编程有什么区别
  9. 可爱的皮卡丘print代码
  10. 你的小米手机升级MIUI11后,要调整这3个设置,不然就会越来越卡