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

如何在iOS上实现照片集的可访问性,ios,accessibility,exif,alassetslibrary,voiceover,Ios,Accessibility,Exif,Alassetslibrary,Voiceover,我基于ALAssetsLibrary编写了一个自定义图像选择器,一切正常,但VoiceOver,每张照片都只表示为“按钮”,我认为这不好 因此,我检查了内置于iOS的Photo应用程序,VoiceOver为每张照片提供了以下信息: 它是照片或视频或截图等 它是纵向或横向 它的创建日期 它是尖锐的或模糊的 它是明的或暗的 我想我可以从ALAsset的属性中得到前三个,即 ALAssetPropertyType ALAssetPropertyOrientation ALAssetPropertyDa

我基于
ALAssetsLibrary
编写了一个自定义图像选择器,一切正常,但
VoiceOver
,每张照片都只表示为“按钮”,我认为这不好

因此,我检查了内置于iOS的
Photo
应用程序,
VoiceOver
为每张照片提供了以下信息:

  • 它是
    照片
    视频
    截图
  • 它是
    纵向
    横向
  • 它的
    创建日期
  • 它是尖锐的或模糊的
  • 它是明的或暗的
  • 我想我可以从
    ALAsset
    的属性中得到前三个,即

  • ALAssetPropertyType
  • ALAssetPropertyOrientation
  • ALAssetPropertyDate
  • 但是锐度和亮度如何呢?我可以从图像元数据中获取它们还是从中派生出来

    更新:

    在照片的EXIF元数据中:

  • 直接从相机拍摄的照片具有亮度,但从网络保存或从屏幕捕获的照片始终返回零值
  • 在exif中锐度始终为零,从文档中,锐度值是“应用于图像的锐度”,因此我认为图像处理应用程序(如光圈)使用它

  • 但是,
    Photos.app
    对于任何类型的照片都有正确的亮度和锐度值,我们自己可以这样做吗?

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

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

    这里我写了一个例子:

    NSDictionary *allMetadata = [[asset defaultRepresentation] metadata];
    
    NSDictionary *exif = [allMetadata objectForKey:(NSString*)kCGImagePropertyExifDictionary];
    
    然后获得
    锐度
    亮度

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

    我发现了两个问题,1。直接从相机拍摄的照片具有亮度,但从网络保存或从屏幕捕获的照片始终返回零值。2.在exif中锐度始终为零,从文档中可以看出,锐度值是“应用于图像的锐度”,因此我认为它是由图像处理应用程序(如光圈)使用的?这两个问题不会出现在Photos.app中,请不要忘记添加
    #import