- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我可以使用 iOS8 中的照片框架请求视频 PHAsset。我想知道磁盘上的文件有多大。似乎没有 PHAsset 的属性来确定这一点。有没有人有办法解决吗? (不需要使用照片框架)
最佳答案
编辑
对于 iOS 9.3,在视频类型 PHAsset
上使用 requestImageDataForAsset
会产生一个图像,这是视频的第一帧,所以它不起作用了。改用下面的方法,对于普通视频,请求选项可以是nil
,但是对于慢动作视频,需要设置PHVideoRequestOptionsVersionOriginal
。
PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init];
options.version = PHVideoRequestOptionsVersionOriginal;
[[PHImageManager defaultManager] requestAVAssetForVideo:asset options:options resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
if ([asset isKindOfClass:[AVURLAsset class]]) {
AVURLAsset* urlAsset = (AVURLAsset*)asset;
NSNumber *size;
[urlAsset.URL getResourceValue:&size forKey:NSURLFileSizeKey error:nil];
NSLog(@"size is %f",[size floatValue]/(1024.0*1024.0)); //size is 43.703005
}
}];
//原始答案
对于 PHAsset,使用这个:
[[PHImageManager defaultManager] requestImageDataForAsset:asset options:nil resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
float imageSize = imageData.length;
//convert to Megabytes
imageSize = imageSize/(1024*1024);
NSLog(@"%f",imageSize);
}];
对于 ALAsset:
ALAssetRepresentation *rep = [asset defaultRepresentation];
float imageSize = rep.size/(1024.0*1024.0);
我测试了一个视频资源,PHAsset 显示大小为 43.703125,ALAsset 显示大小为 43.703005。
编辑对于 PHAsset,另一种获取文件大小的方法。但正如@Alfie Hanssen 提到的,它适用于普通视频,对于慢动作视频,以下方法将返回 block 中的 AVComposition Assets ,因此我添加了对其类型的检查。对于慢动作视频,使用 requestImageDataForAsset
方法。
[[PHImageManager defaultManager] requestAVAssetForVideo:asset options:nil resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
if ([asset isKindOfClass:[AVURLAsset class]]) {
AVURLAsset* urlAsset = (AVURLAsset*)asset;
NSNumber *size;
[urlAsset.URL getResourceValue:&size forKey:NSURLFileSizeKey error:nil];
NSLog(@"size is %f",[size floatValue]/(1024.0*1024.0)); //size is 43.703005
NSData *data = [NSData dataWithContentsOfURL:urlAsset.URL];
NSLog(@"length %f",[data length]/(1024.0*1024.0)); // data size is 43.703005
}
}];
关于ios - 如何确定 iOS8 中视频 PHAsset 磁盘上的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26549938/
我正在尝试获取相册中的所有照片 (PHAssets) 并将它们附加到一个数组中,以便我可以将其作为完成参数传递。 代码在包含 arrayOfPHAsset.append(asset) 的行崩溃。为什么
public func nohanaImagePicker(_ picker: NohanaImagePickerController, didFinishPickingPhotoKitAssets
我曾经使用 ALAssetLibrary。它有 assetForURL 功能,这样我就可以将 URL 保存到 NSUserDefaults 并在应用程序重新启动后通过 URL 检索 ALasset。
在 iOS 14 测试版中,有没有办法检查应用程序是否有权加载 PHAsset在尝试使用 PHImageManager.requestImage? 加载之前的图像这是给 PHAuthorization
我用过 `NSURL *urlA = [info valueForKey:@"PHImageFileURLKey"];` 但是当我尝试使用 URL 保存图像时,URL 为 nil。 `NSDat
我想添加 HDR 图标以指示某些 Assets 是 HDR,但如果这是来自 iphone12 的 HDR 视频记录,我无法获取任何信息来检查视频 最佳答案 + (BOOL)isHDRVideo:(
我有这个奇怪的错误,不知道如何修复它。 我的代码在 Xcode 7.3 中运行良好。但是,在更新到 Xcode 8 之后,我收到了将近 17 个错误和 21 个警告。这可能是 Swift 3 中的一些
在 iOS 的照片框架中,为了请求一组具有特定过滤器的 PHAssets,您可以使用 fetchAssetsWithOptions:options 并传递 >PHFetchOptions 对象与所
PHAsset creationDate返回一个NSDate,该NSDate的构造就像所有照片都是在同一“主”时区中拍摄的一样。例如,在给定的iPhone上,在纽约下午4点拍摄的照片与在加利福尼亚州下
我想知道如何复制 PHAsset并保留照片的上下文。例如,如果照片位于特定相册中,我希望副本位于同一个相册中,紧邻原始相册。如果可能,将保留编辑历史记录,允许用户在需要时将该副本恢复为原始版本。 可以
在 iOS8 上使用照片应用程序时,您可以在查看每张特定照片时看到位置标题。例如“Home”或“Central Park”——如何从 PHAsset 或类似类中获取数据/字符串? 我没有在 PHAss
在 Objective-C 中,我想在后台将所有 PHAssets(图像和视频)上传到我的服务器。任何人都可以建议我该怎么做吗? 最佳答案 let mPhasset : PHAsset = PHAss
我正在使用名为 BSImagePicker 的第三方库从照片库中选择多张图像。我可以设置要选择的最大 PHAssets,但是当我显示 BSImagePickerController 以选择更多照片时,
是否可以将新的 PHAsset 插入相机胶卷中的指定索引? 我试过以下: let cam_req = PHAssetCollectionChangeRequest(for: camera_roll)
保存图像后如何获取图像的 PHAsset,以便将 Assets 的本地标识符保存到我的存储解决方案中并在以后使用图像? 最佳答案 我从来没有这样做过,但我想有一个 PhotoKit 方法允许检索最近保
我看到对于 PHContentEditingInput ( https://developer.apple.com/library/prerelease/ios/documentation/Photo
我正在使用 UIImagePickerController 来允许用户使用相机拍照。当代表被调用时,我想将图像保存到照片库/相机胶卷,我使用 PHAssetChangeRequest 来完成。问题是文
请问有没有办法用PHAsset获取原始文件名? 我使用以下代码提取文件信息。 [[PHImageManager defaultManager] requestImageDataForAsset:
我正在使用 UIImageWriteToSavedPhotosAlbum 将图像保存到照片应用程序。这是我发现的唯一可以让您执行此操作的功能。 这是我的代码: import UIKit import
我想对用户的照片库做一些工作。由于图书馆可能很大,我想在后台进行。我想知道执行 Assets 获取(如 PHAsset.fetchAssets )并在后台处理它们是否安全? 我现在只需要 Assets
我是一名优秀的程序员,十分优秀!