代码之家  ›  专栏  ›  技术社区  ›  naituw

如何在iOS上实现ALAsset照片的可访问性

  •  2
  • naituw  · 技术社区  · 11 年前

    我编写了一个基于 ALAssetsLibrary ,一切都很好,但是 VoiceOver ,每张照片都只代表“按钮”,我认为这不好。

    所以我检查了 Photo 内置于iOS的应用程序, 画外音 为每张照片提供以下信息:

    1. 它是 photo video screenshot
    2. 它是 portrait landscape .
    3. 这个 creation date 它的。
    4. 它是 sharp blurry .
    5. 它是 bright dark .

    我想我能拿到 前三个 从…起 ALAsset 的财产,这是

    1. ALAssetPropertyType
    2. ALAssetPropertyOrientation
    3. ALAssetPropertyDate

    但是怎么样 清晰度 亮度 ? 我可以从图像元数据中获取它们还是从中派生它们?

    更新:

    在照片的EXIF元数据中:

    1. 直接从相机拍摄的照片可以获得亮度,但从网络保存或从屏幕拍摄的照片总是返回零值。
    2. 锐度在exif中总是零,从文档来看,锐度值是“应用于图像的锐度”,所以我认为它被图像处理应用程序(如Aperture)使用

    但是 Photos.app 对于任何类型的照片,总是有合适的亮度和清晰度值,我们自己能做到吗?

    1 回复  |  直到 11 年前
        1
  •  2
  •   B.S.    11 年前

    您可以使用获取值 EXIF 元数据。

    所有的键都在中引用 苹果的文档 here here

    我在这里写了一个例子:

    NSDictionary *allMetadata = [[asset defaultRepresentation] metadata];
    
    NSDictionary *exif = [allMetadata objectForKey:(NSString*)kCGImagePropertyExifDictionary];
    

    然后 sharpness brightness

    NSNumber *sharpness = [exif objectForKey:(NSString*)kCGImagePropertyExifSharpness];
    NSNumber *brightness = [exif objectForKey:(NSString*)kCGImagePropertyExifBrightnessValue];