ALAssetsLibrary这些日子已被弃用,但实际上所有的例子仍在使用它。 对于我的目标,我需要知道添加到照片库中的video的URL,以便我可以将video分享到Instagram应用(这是Instagram接受video的唯一方式)。 该URL可能应该以“assets-library:// …”开头 ALAssetsLibrary很简单: ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library writeVideoAtPathToSavedPhotosAlbum:videoFilePath completionBlock:^(NSURL *assetURL, NSError *error) { // … 以上,URL作为parameter passing给完成块。 但是,与PHPhotoLibrary类和performChanges方法的iOS 9兼容方式呢? var videoAssetPlaceholder:PHObjectPlaceholder! // property // … let videoURL = NSBundle.mainBundle().URLForResource("Video_.mp4", withExtension: nil)! let photoLibrary = PHPhotoLibrary.sharedPhotoLibrary() photoLibrary.performChanges({ let request = PHAssetChangeRequest.creationRequestForAssetFromVideoAtFileURL(videoURL) self.videoAssetPlaceholder = request?.placeholderForCreatedAsset }, completionHandler: { success, error in if […]
我正在从iPhone相册导入照片到我的应用程序的文档文件夹。 这是我的代码。 for (int j=0; j<[assetArray count]; j++) { ALAsset *assest = [assetArray objectAtIndex:j]; CGImageRef imageRef = assest.defaultRepresentation.fullResolutionImage; UIImage *image = [UIImage imageWithCGImage:imageRef]; NSData *imageData = UIImageJPEGRepresentation(image); [imageData writeToFile:documentsPath atomically:YES]; } 它的工作正常,但是当我尝试导入更高分辨率的图像需要更多的时间。 用最less的时间导入正确的方法是什么? 顺便说一句:我把image转换成NSData需要更多的时间。
我使用下面的代码来访问我要上传的图像的文件名。 我需要文件path和大小两个文件名。 ALAssetsLibraryAssetForURLResultBlock resultblock = ^(ALAsset *imageAsset) { ALAssetRepresentation *imageRep = [imageAsset defaultRepresentation]; NSLog(@"[imageRep filename] : %@", [imageRep filename]); [_imageNameArray addObject:[imageRep filename]]; }; [_uploadTbleView reloadData]; ALAssetsLibrary* assetslibrary = [[ALAssetsLibrary alloc] init]; [assetslibrary assetForURL:refURL resultBlock:resultblock failureBlock:nil]; 我面临的问题是, Xcode抛出ALAssetsLibraryAssetForURLResultBlock已弃用的警告消息。 我怎样才能取代上面的代码来获取文件名? 我尝试使用PHAsset,但每当我select文件,它已经得到相同的文件名为所有图像文件的asset.jpg 。
我已经写了一个应用程序,检索照片的GPS元数据,它适用于我的iPhone,但不在模拟器。 如果将包含地理标签的照片拖放到模拟器上,它将被放入照片库。 然后,我的应用程序发布这个代码: ALAssetRepresentation *assetRepresentation = [asset defaultRepresentation]; NSDictionary *metadata = [assetRepresentation metadata]; metadata包含各种各样的项目,但不包括GPS。 有一些技巧让模拟器识别GPS元数据吗? 另外,我想要做的是在模拟器中运行应用程序,为许多不同的设备获取应用程序商店的屏幕截图。 如果您的应用在模拟器中无法正常工作,您如何准备App Store截图?
我知道可以通过使用ALAssetsLibrary获取Photos.app中的图像,但是如何获取Photos.app中的照片总数呢? 我试图检查照片的数量,因为我正在从这个问题的代码获取Photos.app中的最后一个图像:从Photos.app获取最后一个图像? 因此,如果设备上有0张图片,则不会执行上述链接中的代码。 无论如何,我怎么能得到这个? 谢谢!
我目前正在使用第一次请求许可的alasset。 如果想要第二次或每次用户阻止popup权限时,可能如何。
鉴于ALAssetRepresentation ,是否有可能获得其全分辨率修饰的图像? 如果我使用fullResolutionImage方法,我会得到完整分辨率的图像,但是没有任何调整。 如果我使用的方法fullScreenImage我得到了修饰的图像,但减less到适当的全屏显示 。
使用下面的代码,我能够在tableview中获得video文件。 但我无法获得video的path,以便我保存并稍后使用它播放。 – (void)viewDidLoad { [super viewDidLoad]; [activity startAnimating]; assets = [[NSMutableArray alloc] init]; library = [[ALAssetsLibrary alloc] init]; UIImage *viewImage; [library writeImageToSavedPhotosAlbum:[viewImage CGImage] orientation:(ALAssetOrientation)[viewImage imageOrientation] completionBlock:^(NSURL *assetURL, NSError *error){ if (error) { NSLog(@"error"); } else { NSLog(@"url %@", assetURL); } }]; [library enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop){ if (group != NULL) { [group enumerateAssetsUsingBlock:^(ALAsset […]
我用AppDelegate方法创build了一个使用此代码的相册 NSString *albumName=@"999Videos"; ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library addAssetsGroupAlbumWithName:albumName resultBlock:^(ALAssetsGroup *group) { NSLog(@"added album:%@", albumName); } failureBlock:^(NSError *error) { NSLog(@"error adding album"); }]; 现在我想保存录制的video到这个999Videos相册创build。不是我做过的photosAlbum照片。 ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; if ([library videoAtPathIsCompatibleWithSavedPhotosAlbum:outputFileURL]) { [library writeVideoAtPathToSavedPhotosAlbum:outputFileURL completionBlock:^(NSURL *assetURL, NSError *error) video是保存,但不是在video相册。请有人请告诉我如何将video保存到我的自定义相册?
iOS不再向用户请求照片库许可。 即使我从设备上删除了应用程序。 这也发生在模拟器上。 switch ([ALAssetsLibrary authorizationStatus]) { case ALAuthorizationStatusAuthorized: RPMLog(@"authorized"); break; case ALAuthorizationStatusDenied: RPMLog(@"denied"); break; case ALAuthorizationStatusNotDetermined: RPMLog(@"not determined"); break; case ALAuthorizationStatusRestricted: RPMLog(@"restricted"); break; } 我已经授权,当我第一次安装应用程序。 在此之前,没有其他事件或屏幕要求照片触发用户提示。 然后,我请求SavedPhotos中的numberOfAssets,并获取它没有访问提示: ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init]; [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOL *stop) { if (!group) return; UIActionSheet *actionSheet = nil; if (([group numberOfAssets] > 0)) { actionSheet […]