【问题标题】:Get photos only taken by iPhone Camera using ALAssetLibray使用 ALAssetLibray 获取仅由 iPhone 相机拍摄的照片
【发布时间】:2014-05-15 07:47:37
【问题描述】:

我正在使用 ALAssetLibrary 访问相机胶卷。但它正在获取所有图像,例如 App 图像、Facebook 图像等。

我的代码是这样的:

[_library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
    if (group) {
        [group setAssetsFilter:[ALAssetsFilter allPhotos]];
        [group enumerateAssetsUsingBlock:^(ALAsset *asset, NSUInteger index, BOOL *stop) {
            if (asset) {
               //Getting photos here 
        }];
    }     } failureBlock:^(NSError *error) {
    NSLog(@"Failed.");
}];

有没有办法使用 ALAssetLibrary 只获取相机捕获的照片?

【问题讨论】:

    标签: ios objective-c alassetslibrary alasset


    【解决方案1】:

    相机拍摄的照片和 WhatsApp 图像之间的唯一区别是 EXIF 数据。

    你可以读出来

    ALAssetRepresentation *representation = [asset defaultRepresentation];
    NSDictionary *meta = [representation metadata];
    

    或在 Swift 中:

    var representation = asset.defaultRepresentation()
    var meta = representation.metadata()
    

    这将返回以下内容:

    {TIFF}: {
        DateTime = "2014:04:01 20:33:59";
        Make = Apple;
        Model = "iPhone 5";
        Orientation = 3;
        ResolutionUnit = 2;
        Software = "7.1";
        XResolution = 72;
        YResolution = 72;
    }, PixelWidth: 3264]
    

    所以你可以检查 Make 是否是 Apple,对于 WhatsApp 图像它是空的:

    if([metaData["{TIFF}"]["Make"] isEqualToString: @"Apple"])
    

    或在 Swift 中:

    if metaData["{TIFF}"]!["Make"] == "Apple"
    

    【讨论】:

    • 是的,我已经实现了。无论如何感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多