2014-09-18 64 views
4

我試圖在iOS 8中使用新的Photos API獲取文件擴展名,但直到現在還沒有找到方法。的iOS 8.0之前,我會用ALAssetRepresentation得到文件的擴展名,如:如何使用Photos API檢索iOS 8.0中的照片擴展名(jpg/png)?

// Get asset representation from asset 
ALAssetRepresentation *assetRepresentation = [asset defaultRepresentation]; 

// Extract file extension from the original file name 
NSString* fileExt = [[assetRepresentation filename] pathExtension]; 

有沒有什麼辦法讓照片文件擴展名呢? PS:我使用新的Photos API,因爲我需要訪問我的照片應用程序中的所有照片,並且ALassetsLibrary僅允許訪問「最近添加的」照片。

回答

12

我懂了。

[[PHImageManager defaultManager] requestImageDataForAsset:asset options:imageRequestOptions resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) { 

     NSLog(@"info - %@", info); 
    }]; 

PHImageFileDataKey = <PLXPCShMemData: 0x179ab6d0> bufferLength=1384448 dataLength=1384448; 
PHImageFileOrientationKey = 1; 
PHImageFileSandboxExtensionTokenKey = "c05e608acaf0bb212086ed2d512ccc97ea720ac3;00000000;00000000;0000001a;com.apple.app-sandbox.read;00000001;01000003;0000000000030b8c;/private/var/mobile/Media/DCIM/102APPLE/IMG_2607.JPG"; 
PHImageFileURLKey = "file:///var/mobile/Media/DCIM/102APPLE/IMG_2607.JPG"; 
PHImageFileUTIKey = "public.jpeg"; 
PHImageResultDeliveredImageFormatKey = 9999; 
PHImageResultIsDegradedKey = 0; 
PHImageResultIsInCloudKey = 0; 
PHImageResultIsPlaceholderKey = 0; 
PHImageResultWantedImageFormatKey = 9999; 
+0

感謝亞歷克斯,這工作。 – 2014-09-24 21:31:19

+0

你知道我們怎樣才能獲得相同的視頻或音頻? – 2014-09-24 21:34:21

+0

可能會檢查-requestPlayerItemForVideo方法 – alex 2014-09-25 10:10:33

1

下面是做到這一點的一種方法:

PHImageRequestOptions * imageRequestOptions = [[PHImageRequestOptions alloc] init]; 
imageRequestOptions.synchronous = YES; 

[[PHImageManager defaultManager] 
requestImageForAsset:asset 
targetSize:CGSizeMake(2048, 2048) 
contentMode:PHImageContentModeAspectFit 
options:imageRequestOptions 
resultHandler:^(UIImage *result, NSDictionary *info) { 
}]; 

文件名包含在信息。例如:

PHImageFileURLKey = "file:///var/mobile/Media/DCIM/100APPLE/IMG_0066.JPG"; 
+0

信息中沒有這樣的關鍵。這裏是:PHImageFileOrientationKey = 0; PHImageResultDeliveredImageFormatKey = 4031; PHImageResultIsDegradedKey = 0; PHImageResultWantedImageFormatKey = 4031; – alex 2014-09-24 07:53:58

+2

這是一個有效的答案。嘗試使用targetSize的原始大小或最大大小。 – 2014-09-25 00:12:02

+1

只是你的評論使這個答案正確) – alex 2014-09-25 10:08:06

0

** imageManager.requestImageDataForAsset((圖像[indexPath.row]如PHAsset),選項:PHImageRequestOptions(),resultHandler:{圖象 - ,dataUTI,方向,在

VAR STR信息:字符串= (((info as Dictionary)[「PHImageFileURLKey」])!as NSURL).lastPathComponent as String) cell.imageName.text = str as String **

0

這些也是一次簡單的方法來獲取原始文件名從照片中選擇

PHAsset *asset; // Init this object with your PHAsset object 

//and then use below line 
NSLog(@"asset ext : %@",[[asset valueForKey:@"filename"] pathExtension]); 
相關問題