我在尝试使用ALAssetsLibrary将图像保存到SavedPhotosAlbum时遇到了一个奇怪的问题,特别是当我使用writeImageToSavedPhotosAlbum方法时。
基本上,我的问题是NSURL在我的完成块中返回null ...没有错误,但URL为空。
下面是方法:
UIImage *imageToSave = [libraryPicture imageFromCurrentlyProcessedOutput];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeImageToSavedPhotosAlbum:[imageToSave CGImage] orientation:ALAssetOrientationUp completionBlock:^(NSURL *assetURL, NSError *error) {
NSLog(@"AssetURL: %@", assetURL);
if(!error) {
NSLog(@"\t ! Error");
NSLog(@"\t Error: %@", [error localizedDescription]);
NSLog(@"\t Error code %d", [error code]);
}
if(error != nil) {
NSLog(@"\t ERROR != NIL");
NSLog(@"\t Error - Image Failed To Save With Error: %@", [error localizedDescription]);
NSLog(@"\t Error code %d", [error code]);
}
if(error == nil) {
NSLog(@"\t ERROR == NIL");
}
}];
我在几行之外使用了一个非常类似的方法(在另一种切换情况下),它在几乎相同的完成块中打印URL (尽管调用的方法不同):
[stillCamera capturePhotoAsJPEGProcessedUpToFilter:selectedFilter withCompletionHandler:^(NSData *processedJPEG, NSError *error) {
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library writeImageDataToSavedPhotosAlbum:processedJPEG metadata:stillCamera.currentCaptureMetadata completionBlock:^(NSURL *assetURL, NSError *error2) {
if (error2 != nil) {
NSLog(@"ERROR: the image failed to be written");
}
else {
NSLog(@"PHOTO SAVED FROM STILL CAMERA - assetURL: %@", assetURL);
}
}];
}];
发布于 2013-10-21 17:42:12
如果你真的看到了你声明的行为,这似乎是Asset Library违反了它的API合同。你应该向Apple提交一个示例项目来演示这一点,也许还应该提交DTS事件以获得更快的响应。
https://stackoverflow.com/questions/19307611
复制相似问题