requestImageDataForAsset返回nil图像数据

时间:2015-06-29 15:21:10

标签: ios iphone swift

我已经坚持了几天。我试图在回调中获取图像,但我总是得到nil。这些是我使用的选项:

 let options = PHImageRequestOptions()
            options.deliveryMode = .HighQualityFormat
            options.resizeMode = .None

我也尝试将选项设置为nil而没有任何运气。这是我在传递给块的信息值中获得的数据。

[PHImageResultIsInCloudKey: 0, 
 PHImageResultDeliveredImageFormatKey: 9999, 
 PHImageFileURLKey: file:///var/mobile/Media/DCIM/100APPLE/IMG_0052.JPG, 
 PHImageResultRequestIDKey: 84, 
 PHImageResultIsDegradedKey: 0, 
 PHImageResultWantedImageFormatKey: 9999,  
 PHImageResultIsPlaceholderKey: 0, 
 PHImageFileSandboxExtensionTokenKey: 
  64b47b046511a340c57aa1e3e6e07994c1a13853;00000000;00000000;0000001a;com.apple.app-sandbox.read;;00000000;00000000;0000000000000000;/private/var/mobile/Media/DCIM/100APPLE/IMG_0051.JPG]

我也尝试使用requestImageForAsset,我得到了相同的结果。我想通过使用requestImageDataForAsset我可以更好地控制数据。

另外,我认为该文件存在于云中,但不是PHImageResultIsInCloudKey值设置为0;否则,我会下载它。

顺便说一下,我能够在另一个视图中获得预定义大小为200x200的较小版本的图像;然而,当我试图获得它的更大版本时,我得到零。我知道手机上存在更高分辨率的图像(我可以在照片应用中看到它)

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

我遇到了类似的问题,并尝试将PHImageRequestOptions对象上的networkAccessAllowed选项设置为YES - 这似乎解决了这个问题。对我来说,问题肯定是图像在云端,因为相机胶卷上的图像工作正常,但云中的图像没有。

答案 1 :(得分:0)

我有同样的问题。我认为PHImageRequestOptions类中存在一个错误,因此我们在下面的代码中传递nil,这对我很有帮助。

            dispatch_semaphore_t sema = dispatch_semaphore_create(0);
            [[PHImageManager defaultManager] requestImageDataForAsset:asset options:nil resultHandler:^(NSData * _Nullable imageData, NSString * _Nullable dataUTI, UIImageOrientation orientation, NSDictionary * _Nullable info) {
                assetModel.size = imageData.length;
                NSString *filename = [asset valueForKey:@"filename"];
                assetModel.fileName = filename;
                dispatch_semaphore_signal(sema);
            }];
            dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);