我正在尝试构建一个应用程序,可以使用相机拍摄并保存图片到图库。但是我无法获取图片的文件名。如果我从相机胶卷中选择图片,那么我就能够获取所选图片的文件名。但是当我在我的应用程序中使用相机拍摄照片时,它返回文件名“null
”。以下是我使用UIImagePickerController
保存和选择图库中图片的代码:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *chosenImage = [self scaleAndRotateImage:[info valueForKey:UIImagePickerControllerOriginalImage]];
NSString *mediaType = info[UIImagePickerControllerMediaType];
self.userProfileImage.image = chosenImage;
if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
UIImage *image = info[UIImagePickerControllerOriginalImage];
if (newMedia)
UIImageWriteToSavedPhotosAlbum(image,
self,
@selector(image:finishedSavingWithError:contextInfo:),
nil);
}
imageRotation=[NSString stringWithFormat:@"%f %f %f",acos (self.userProfileImage.transform.a), asin (self.userProfileImage.transform.b), atan2(self.userProfileImage.transform.b, self.userProfileImage.transform.a)];
CGFloat angle = [(NSNumber *)[self.userProfileImage valueForKeyPath:@"layer.transform.rotation.z"] floatValue];
NSLog(@"%f", angle);
NSURL *referenceURL = [info objectForKey:UIImagePickerControllerReferenceURL];
ALAssetsLibrary *assetLibrary = [ALAssetsLibrary new];
[assetLibrary assetForURL:referenceURL
resultBlock:^(ALAsset *asset) {
ALAssetRepresentation *assetRep = [asset defaultRepresentation];
fileName = [assetRep filename];
NSLog(@"File name = %@", fileName);
}
failureBlock:^(NSError *error) {
NSLog(@"%@", error);
}];
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UIApplication sharedApplication] setStatusBarHidden:YES];
[picker dismissViewControllerAnimated:YES completion:nil];
imageChanged=TRUE;
}
这段代码是用来保存截图的
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo {
UIAlertView *alert;
//NSLog(@"Image:%@", image);
if (error) {
alert = [[UIAlertView alloc] initWithTitle:@"Error!"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
}
我卡在了如何获取捕获图像的文件名这一点上。我的代码有什么问题吗?请给我提供任何更正或解决方案。非常感谢您的帮助。提前致谢。