Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios8 如何使用Photos API在iOS 8.0中检索照片扩展(jpg/png)?_Ios8_Photos_Photosframework - Fatal编程技术网

Ios8 如何使用Photos API在iOS 8.0中检索照片扩展(jpg/png)?

Ios8 如何使用Photos API在iOS 8.0中检索照片扩展(jpg/png)?,ios8,photos,photosframework,Ios8,Photos,Photosframework,我正在尝试使用iOS 8中的新照片API获取照片的文件扩展名,但到目前为止还没有找到这样做的方法。在iOS 8.0之前,我会使用ALAssetRepresentation获取文件扩展名,如: // Get asset representation from asset ALAssetRepresentation *assetRepresentation = [asset defaultRepresentation]; // Extract file extension from the ori

我正在尝试使用iOS 8中的新照片API获取照片的文件扩展名,但到目前为止还没有找到这样做的方法。在iOS 8.0之前,我会使用ALAssetRepresentation获取文件扩展名,如:

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

// Extract file extension from the original file name
NSString* fileExt = [[assetRepresentation filename] pathExtension];
现在有没有办法获取照片的文件扩展名?
PS:我正在使用新的照片API,因为我需要访问我的照片应用程序中的所有照片,而我的照片库只允许访问“最近添加的”照片

这里有一种方法:

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) {
 }];
文件名包含在info中。例如:

PHImageFileURLKey = "file:///var/mobile/Media/DCIM/100APPLE/IMG_0066.JPG";
我知道了

[[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;
[[PHImageManager defaultManager]请求ImageDataforAsset:资产选项:imageRequestOptions resultHandler:^(NSData*imageData,NSString*dataUTI,UIImageOrientation,NSDictionary*info){
NSLog(@“info-%@”,info);
}];
PHImageFileDataKey=bufferLength=13844448 dataLength=13844448;
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;
PHIMAGERESULTISPHOLDERKEY=0;
PHImageResultWantedImageFormatKey=9999;

**imageManager.requestImageDataForAsset((images[indexPath.row]作为PHAsset),选项:PHImageRequestOptions(),resultHandler:{imagedata,dataUTI,方向,中的信息

var str:String=(((作为字典的信息)[“PHImageFileURLKey”])!作为NSURL.lastPathComponent作为字符串)
cell.imageName.text=str作为字符串**

这也是从照片中选择原始文件名的一种简单方法

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

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

信息中没有这样的键。它们是:PHImageFileOrientationKey=0;PHImageResultDeliveredImageFormatKey=4031;PhimageResultisDegradeKey=0;PHImageResultWantedImageFormatKey=4031;这是一个有效的答案。请尝试对targetSize使用原始大小或最大大小。此调用需要网络访问来确定ite的UTIms在云中。有什么办法吗?在下载之前,Photos框架似乎不知道云中的图像是什么格式,如果您只想从库中获取GIF,这是相当次优的!对于使用PHImageFileURLKey的视频,使用PHImageFileURLKey为电影资产提供了不正确的文件名,并在末尾在.jpg上标记使用requestAVAssetForVideo的say.MOV的ad返回正确的文件名,但它嵌入在PHImageFileSandboxExtensionTokenKey中,看起来像“f24525397a8e061d41adb973502e7574eaf07390;00000000;00000000;0000000000000000001b;com.apple.avasset.read-only;00000001;01000004;0000000000 fdce91;/users/username/library/developer/coresimulator/devices/7630c944-177a-4899-b5ac-7a52f30b0fff/data/media/dcim/100apple/img_0006.mov"。不太容易提取。你知道我们如何才能获得相同的视频或音频?可能是check-requestPlayerItemForVideomethod@GarimaSrivastava实际上,你可以使用相同的方法获取视频信息,但它不会传回所有相同的对象!@alex并非所有上述密钥都记录在公共API中或出现在公共API中。我只是我担心,如果苹果决定删除或重命名它们,现在使用它们可能会在将来破坏它们。这个调用需要网络访问来确定云中项目的UTI。有什么办法吗?似乎照片框架在下载之前不知道云中图像的格式,如果你想的话,这是相当次优的去图书馆拿礼物!