关于图片的EXif(通过图片获取经度)
通常有些场景 我们通过一张图片就可以获取图片的拍摄地点。这个是如何做到呢?
可交换图像文件格式常被简称为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(通过图片获取经度)相关推荐
- C# 获取图片的EXIF 信息
关于 EXIF 信息的介绍. 1 EXIF,是英文Exchangeable Image File(可交换图像文件)的缩写.EXIF是一种图像文件格式,只是文件的后缀名为jpg.EXIF信息是由数码相 ...
- php exif信息,php通过exif_read_data函数获取图片的exif信息
php获取图片的exif信息,php自带一个exif_read_data函数可以用来读取图片的exif信息,代码来自php手册 echo "test1.jpg: \n"; $exi ...
- JS获取图片的EXIF信息+纠正图片方向
前端图片处理碰到的一个离奇 bug , 关于图片的 EXIF 信息,特地记录下来 . 然后使用一下代码可以获取Orientation信息,并纠正Orientation带来的图片旋转问题 // from ...
- 获取图片的EXIF信息如此困难?
对于数码相机所拍摄出的图片,Exif信息非常重要.Exif是英语Exchangeable Image File(可交换图像文件)的缩写,最初由日本电子工业发展协会(JEIDA --Japan Elec ...
- php exif信息,php通过exif_read_data函数获取图片的exif信息_php技巧
php获取图片的exif信息,php自带一个exif_read_data函数可以用来读取图片的exif信息,代码来自php手册 \n"; $exif = exif_read_data('te ...
- js获取图片的EXIF,解决图片旋转问题
相信大家在做项目的时候会遇到在canvas里加入图片时,图片发生90°,180°的旋转.当时的你肯定时懵逼的,为毛. 其实这就是图片的EXIF搞的鬼. 什么是EXIF 简单来说,Exif 信息就是由数 ...
- php exif信息,php通过exif_read_data函数获取图片的exif信息 PHP
php获取图片的exif信息,php自带一个exif_read_data函数可以用来读取图片的exif信息,代码来自php手册 echo 'test1.jpg: \n'; $exif = exif_r ...
- android照片添加gps,如何利用Exif为图片文件添加GPS坐标信息
今天主要给大家分享一个知识点--如何利用Exif为图片文件添加GPS坐标信息,关于这个知识点网上的资料很多,而且这个知识点本身应该是不难的,但是当我在项目使用时却遇到了一个问题:在读取某个图片的坐标信 ...
- python 通过图片(原图)精确获取图片拍摄的位置,时间,设备等信息
想要悄悄的获取某人的位置,只需通过她拍摄的照片,就能可以实现.此方法需要用到识别图片元数据的库.这里操作是在虚拟机ubuntu上,使用python最好是在3.6及以上. pip3 install ex ...
最新文章
- 一些通讯知识、TCP/IP、三次握手四次分手(正确的图,网上很多错了)、HTTP\HTTPS、DNS、UDP
- 条款10 令operator=返回一个reference to *this
- 使用Callable和Future接口创建线程
- Go语言实例化结构体——为结构体分配内存并初始化
- 三年程序猿的实战开发经验之谈-做人做事建议
- 盖茨发文谈如何实现零碳目标 称看好电动车未来
- [JavaWeb-JDBC]JDBC_快速入门_idea jdbc连接Mysql数据库
- 怎么设置internet才能下载JAVA_如何使用Java从Internet下载和保存文件?
- bzoj 1217 [HNOI2003]消防局的设立 贪心
- 早上内部资源共享讨论发言稿
- WPF中如何选择合适的元数据标记?(英文)
- 《菜菜的机器学习sklearn课堂,孔浩Java视频百度云盘
- 鸿蒙系统 安卓碎片化,鸿蒙系统讲解决安卓碎片化问题,4G流畅度媲美12G!
- 浪潮存储通过ISCSI映射至Linux服务器、多路径配置方法
- 网易有道词典bug记录
- cron 每隔3天_crontab实现每隔多少天执行一次脚本的两种方法
- linux nvme文件系统,Intel NVMe驱动器扇区大小不是4096的xfs文件系统的性能下降
- 学习C语言的相关网站(C学习资料)
- 语义解析(一) —— 概述(数据和模型简介)
- Java基本类型转换