使用相机拍摄的照片不包含任何 ALAsset 元数据

2023-11-21

最奇怪的事情正在发生。我有一个操作表,用户可以选择使用相机拍照或从相机胶卷中选择一张照片。当 UIImagePicker 从选择返回时,我使用 ALAssetsLibrary 来确定照片中嵌入的 GPS 信息。从相机胶卷中选择照片效果非常好,并且我能够检索 GPS 信息。然而,用相机拍照绝对不提供 GPS 信息,事实上我根本没有元数据。有谁知道我在这里做错了什么?

代码如下:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{    
    NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
    if([mediaType isEqualToString:(__bridge NSString *)kUTTypeImage])
    {        
        void (^ALAssetsLibraryAssetForURLResultBlock)(ALAsset *) = ^(ALAsset *asset)
        {
            // get images metadata
            NSDictionary *metadata = asset.defaultRepresentation.metadata;
            NSLog(@"Image Meta Data: %@",metadata);

            // get coords 
            CLLocation *location = [asset valueForProperty:ALAssetPropertyLocation];
            NSLog(@"coordLat: %f , coordLon: %f", location.coordinate.latitude, location.coordinate.longitude);

            // do more here - rest of code snipped to keep this question short

    };
    NSURL *assetURL = [info objectForKey:UIImagePickerControllerReferenceURL];
    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    [library assetForURL:assetURL
             resultBlock:ALAssetsLibraryAssetForURLResultBlock
            failureBlock:^(NSError *error) 
            {
                // handle error 
            }];

    // rest of code snipped to keep this question short

正如我所解释的,使用相机时会输出以下内容。

2012-04-15 17:58:28.032 MyApp[511:707] Image Meta Data: (null)
2012-04-15 17:58:28.041 MyApp[511:707] coordLat: 0.000000 , coordLon: 0.000000

但是,如果我选择现有照片,或退出应用程序,用相机拍摄一张新照片,然后返回应用程序并从相机胶卷中选择该照片,我会从 NSLog 获得以下输出。

2012-04-15 17:57:03.286 MyApp[511:707] Image Meta Data: {
ColorModel = RGB;
DPIHeight = 72;
DPIWidth = 72;
Depth = 8;
Orientation = 6;
PixelHeight = 1936;
PixelWidth = 2592;
"{Exif}" =     {
    ApertureValue = "2.970854";
    BrightnessValue = "2.886456";
    ColorSpace = 1;
    ComponentsConfiguration =         (
        1,
        2,
        3,
        0
    );
    DateTimeDigitized = "2012:04:15 17:24:02";
    DateTimeOriginal = "2012:04:15 17:24:02";
    ExifVersion =         (
        2,
        2,
        1
    );
    ExposureMode = 0;
    ExposureProgram = 2;
    ExposureTime = "0.06666667";
    FNumber = "2.8";
    Flash = 24;
    FlashPixVersion =         (
        1,
        0
    );
    FocalLength = "3.85";
    ISOSpeedRatings =         (
        80
    );
    MeteringMode = 5;
    PixelXDimension = 2592;
    PixelYDimension = 1936;
    SceneCaptureType = 0;
    SensingMethod = 2;
    Sharpness = 2;
    ShutterSpeedValue = "3.9112";
    SubjectArea =         (
        1295,
        967,
        699,
        696
    );
    WhiteBalance = 0;
};
"{GPS}" =     {
    Altitude = "14.9281";
    AltitudeRef = 0;
    ImgDirection = "107.4554";
    ImgDirectionRef = T;
    Latitude = "32.7366666666667";
    LatitudeRef = N;
    Longitude = "71.679";
    LongitudeRef = W;
    TimeStamp = "21:26:20.00";
};
"{TIFF}" =     {
    DateTime = "2012:04:15 17:24:02";
    Make = Apple;
    Model = "iPhone 4";
    Orientation = 6;
    ResolutionUnit = 2;
    Software = "5.0.1";
    XResolution = 72;
    YResolution = 72;
    "_YCbCrPositioning" = 1;
};
}
2012-04-15 17:57:03.302 MyApp[511:707] coordLat: 32.7366666666667 , coordLon: -71.679

PS - 我正在使用带 ARC 的 xCode 4.3


In - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

保存照片时尝试此操作

    ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
    [library writeImageToSavedPhotosAlbum:image.CGImage
                                 metadata:[info objectForKey:UIImagePickerControllerMediaMetadata]
                          completionBlock:^(NSURL *assetURL, NSError *error) {
        NSLog(@"assetURL %@", assetURL);
    }];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用相机拍摄的照片不包含任何 ALAsset 元数据 的相关文章

  • NSTextview:如何获取插入点的字形矩形?自定义文本视图?

    我似乎找不到任何有关如何获取插入点的矩形的文档 我试图在文本插入点 插入点正下方显示一个视图 如自动完成 我正在考虑制作一个自定义文本视图 但如果我可以避免它 那对我的情况来说将是理想的 谢谢 NSRect rectForActiveRan
  • 当应用程序从 iPhone 后台出现时,会调用什么方法?

    我知道当 iphone 应用程序进入后台时 会调用这些方法 void applicationDidEnterBackground UIApplication application void applicationWillResignAct
  • 在 wkwebview 中启用摄像头和麦克风访问

    我有一个针对移动设备优化的网络应用程序 它利用getUserMedia访问网络摄像头和麦克风资源 我正在将这个应用程序包装在WKWebView因为我想提供原生应用程序体验 我知道 iOS 不允许通过浏览器访问相机 但是有什么方法可以使用本机
  • UIPopViewController 不工作

    我有一个 xib 文件 其中有 h 和 m 链接 在 xib 中有一个带有 textView 的 UIView 我想要对该视图执行的操作是 当您单击按钮时将其作为 UIPopViewController 打开 这是我的代码 IBAction
  • 如何使用 UIScrollView?

    我该如何使用UIScrollView 请给我一个带有一张滚动图像的简单示例 这将使您深入了解UIScrollView控制 学习 UIScrollView 的基础知识 https stackoverflow com questions 159
  • 类型铸造自我

    以下自我转换对 ClassA 有何作用 这种种姓可以让你进入ClassA吗 A h类 interface ClassA NSObject NSUInteger someNumber ClassB classB property nonato
  • iPhone 地址栏阻止了 HTML 页面标题按钮?

    我有一个带有两个标题按钮的移动网站 在 iPhone 上的纵向模式下 效果很好 我可以按按钮 问题是这样的 当我切换到纵向模式并尝试点击按钮时 本机 iPhone 地址栏就会显示 它位于标题上方 因此我无法按按钮 图片显示了问题 按一个按钮
  • 在 OpenGL ES 1.1 中创建闪电

    我需要使用 OpenGL ES 1 1 iPhone 创建漂亮的闪电 并计划使用着色器 然而 当我在上一个问题中询问它时 OpenGL ES 1 x 着色器 https stackoverflow com questions 543948
  • iPhone只能使用SQLite数据库吗?

    iPhone 可以使用 SQLite 之外的其他数据库吗 比如 MySQL iPhone 只能直接在设备上使用 SQLite 作为数据库 这意味着 iPhone 内部没有 MySQL 服务器 但是您可以并且可以自由地拥有 您自己的 MySQ
  • 如何获取 UIImage 的大小(以 KB 为单位)?

    有没有办法从 UIImage 获取以 KB 为单位的文件大小 而不从 didFinishPickingMediaWithInfo 获取该图像 所呈现的图像来自相册 我尝试了以下代码 但这给出了以下结果 图像大小 KB 0 000000 vo
  • Firebase 查询 - 查找包含字符串的子项

    我在使用 Firebase 查询时遇到了一些问题 我想查询对象 其中对象子值包含特定字符串 到目前为止 我有一些看起来像这样的东西 Firebase ref Firebase alloc initWithUrl https dinosaur
  • 具有 3D 旋转功能的 CAEmitterCell

    我正在尝试使用 CAEmitterLayer 和 CAEmitterCell 重现从顶部落下的小纸片效果 到目前为止 我得到了它的 2D 动画 但是我很难让每个单元格在掉落时旋转 如何对每个粒子应用随机旋转 我尝试过 3D Transfor
  • iPhone – 类似 Photoshop 的效果

    我可以在 iPhone 中制作乘法 屏幕 颜色或其他类似 Photoshop 的效果吗 Check 石英演示 http developer apple com iphone library samplecode QuartzDemo ind
  • 框架链接错误,找不到图像?

    我在我的应用程序中使用 DarwiinRemote 的 WiiRemote framework 我已经通过下载源代码并要求垃圾收集以及针对 10 5 进行构建来修复了一些问题 但是 当我尝试将其添加到我的项目时 我收到控制台错误 dyld
  • UITextField 验证视觉反馈

    我有一个 uiTextField 我正在验证输入 当我输入无效时 有哪些适当的方法可以显示输入无效 是否有任何内置机制可以显示无效的输入状态 将 警告 图像添加到 UITextField 的左侧以指示该字段需要一个值非常容易 尝试这个 UI
  • 使用 Xcode 资产目录缓存 UIImage

    我们都知道UIImage神秘的幕后缓存机制imageNamed 方法 在苹果的UIImage 类参考 https developer apple com library IOS documentation UIKit Reference U
  • 何时使用 takeUnretainedValue() 或 takeRetainedValue() 来检索 Swift 中的非托管对象?

    根据将 Swift 与 Cocoa 和 Objective C 结合使用 https developer apple com library prerelease ios documentation Swift Conceptual Bui
  • Objective C - 后台执行选择器并且分离新线程选择器?

    detachNewThreadSelector 和performSelectorInBackground 都用于在后台调用方法 2种方法有什么区别吗 或者它们的工作方式相同吗 它们本质上是相同的 但范式略有不同 他们在幕后做着完全相同的事情
  • iOS Javascript 引擎 parseFloat(1) 返回负数

    这段代码将使错误出现 function causeBug d var k var n parseFloat 1 var c Math abs d if n lt 0 k else k return k n function for var
  • iOS:如何实现像Android的startActivityForResult这样的行为

    我是一名 Android 开发人员 正在开发我们应用程序的 iOS 版本 我需要知道如何在 Android 上实现类似于 startActivityForResult 的行为 我需要显示一个新的视图控制器 然后在新的视图控制器关闭时将控制权

随机推荐

  • void* 字面意思是float,如何转换?

    所以我在我的 C 应用程序中使用这个 C 库 其中一个函数返回 void 现在我对纯 C 不是最敏锐的 但听说 void 可以转换为几乎任何其他 类型 我还知道我期望在这个函数的末尾有一个浮点数 所以我将 void 转换为 float 并取
  • 如何限制对node.js javascript中的api的访问?

    我做了一些研究 但找不到任何能让我的案例成功的东西 所以 我正在加载 js从外部脚本require 每个脚本导出一个函数 main js var main 10 var mod1 require mod1 js mod1 js module
  • Spring 4.0 中的字符串到日期转换

    我正在学习 Spring 4 0 0 M3 以下是代码 Bean package org chebus springs import java util Date public class Traingle private String n
  • HttpServletRequest#getParts() 返回一个空列表

    我有以下 HTML 表单
  • 如何合并两个 JSON 对象数组 - 在 Javascript/jQuery 中删除重复项并保留顺序?

    jsfiddle link http jsfiddle net vN6fn 1 假设我有这两个对象 var obj1 data id 1 comment comment1 id 2 comment comment2 id 3 comment
  • Rails 上的复选框

    在 Ruby on Rails 中制作与某个问题相关的复选框的正确方法是什么 目前我有 div class form row div
  • 在ggplot2中将一个面板设为空白

    p lt ggplot mtcars aes mpg wt p geom point facet grid cyl vs theme bw 我想将面板 右下角的 1 vs 8 设为空白 不显示任何数据点 但同时 我想保留这种安排 so fa
  • Excel:如果上面的单元格具有相同的值,则抑制?

    当上面的单元格具有相同的值时 Excel 是否可以抑制列中的值 我想要这样的东西 A 1234 2345 3456 B 4567 C 5678 6789 D 7890 8901 其中 A 下面的 2 个单元格实际上是 A 但被隐藏了 理想情
  • 从模块导入的变量在再次导入同一模块后变为$null

    我有一个简单的模块 varExp psm1 var1 20 导出模块成员 变量 var1 我将此模块导入到 PS 会话中 PS gt 导入模块 varExp psm1 then PS gt var1 20 但是当我第二次导入它之后 PS g
  • 了解 Selenium IDE 与 Selenium RC

    Selenium IDE 和 Selenium RC 在功能上有什么区别 Selenium IDE 是一个 Firefox 插件 为您提供用于记录测试的基本记录器 这些测试使用关键字记录在基于 HTML 表的架构中 IDE 使您能够将代码导
  • 如何使用 php 命令行定义多个 ini 设置?

    我正在尝试允许allow url fopen and rename暂时用于脚本的函数 我可以只用一个函数来完成它 但不能同时使用两个函数 像这样的东西 php d allow url fopen on rename on
  • 为强制定向网络中的每个链接指定颜色,networkD3::forceNetwork()

    问题是根据链接的值或权重指定两种不同的颜色networkD3 forceNetwork在 R 中 例如 Blue对于大于1的链接权重 dark对于小于 1 的链接权重 示例代码 复制自here the forceNetwork部分 libr
  • 为什么 Ruby 似乎随机访问目录中的文件?

    这是设计使然吗 这是代码 class FileRenamer def RenameFiles folder path files Dir glob folder path end end puts Renaming files rename
  • Java Swing GUI 的自动化测试 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有哪些选项可以为用 Java Swing 编写的 GUI 构建自动化测试 我想测试一些使用以下代码编写的 GUINetBeans Swing GUI
  • 惰性洗牌算法

    我有一个很大的元素列表 我想以随机顺序迭代它们 但是 我无法修改该列表 也不想创建它的副本 因为 1 它很大 2 可以预期迭代会提前取消 List
  • 解析 XPath 表达式

    我正在尝试为 XPath 创建一个 AET 抽象表达式树 因为我正在编写一个 WYSIWYG XSL 编辑器 在过去的三到四个小时里 我一直在与 XPath BNF 碰头 我想到了另一个解决方案 我想我可以编写一个实现 IXPathNavi
  • 在 Android 中禁用屏幕锁定(电源)按钮

    我希望当我的应用程序运行电源按钮时 按下该按钮会锁定屏幕并且屏幕变黑 应该被禁用 使用户无法锁定屏幕 我在三星 Galaxy S 手机的默认相机应用程序中注意到了这个东西 这也是我尝试做同样事情的原因 我还有一个与相机相关的应用程序 试试这
  • vim 显示两行选项卡

    当你同时打开很多文件时 Vim 是否可以显示两行选项卡 我不希望出现选项卡溢出样式的箭头 这不完全是你所要求的 但我从使用选项卡切换到使用 BufExplorer 在它们之间切换的普通旧式多个缓冲区 http www vim org scr
  • 比较 VBA 中的日期

    我有两个文本框 有两个不同的日期 orderDate 和 receiveDate 收到的日期需要手动输入到表单中 我想包括在 orderDate 之后应该发生 receiveData 的验证 我已经尝试过 If txtRecievedDat
  • 使用相机拍摄的照片不包含任何 ALAsset 元数据

    最奇怪的事情正在发生 我有一个操作表 用户可以选择使用相机拍照或从相机胶卷中选择一张照片 当 UIImagePicker 从选择返回时 我使用 ALAssetsLibrary 来确定照片中嵌入的 GPS 信息 从相机胶卷中选择照片效果非常好