如何在 IOS 中保存新令牌照片
Posted
技术标签:
【中文标题】如何在 IOS 中保存新令牌照片【英文标题】:How to save a new-token photo in IOS 【发布时间】:2012-02-23 15:47:06 【问题描述】:我现在正在为 UIImagePicker 苦苦挣扎。
我已经阅读了文档,但似乎没有提到我应该如何保存新的令牌照片,我的意思是在我的应用中将其保存到我自己的文档中。
其实,我的核心数据中的一个实体中有一个“照片”属性,
所以,“照片”应该只是一个 NSString 来保存真实照片的文件路径,对吧?
但是如何保存该照片并获取其正确的文件路径?
我只是对NSFilePath之类的东西知之甚少,希望有人教我一点。
非常感谢!
【问题讨论】:
【参考方案1】:您可能知道如何呈现图像选择器:
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[viewController presentModalViewController:picker animated:YES];
通过上面的 viewController 实现了 UIImagePickerControllerDelegate 并确保你实现了这个功能:
- (void)imagePickerController:(UIImagePickerController *)returnedPicker didFinishPickingMediaWithInfo:(NSDictionary *)info
和
- (void)imagePickerControllerDidCancel:(UIImagePickerController *)returnedPicker
当用户选择了一张照片时,第一个方法被调用。在这种方法中,您可以使用以下方法获取图像:
UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
要将其写入文件,您可以将其设为 JPEG 或 PNG。如果是 JPEG,您可以这样做:
[UIImageJPEGRepresentation(image, 1.0) writeToFile:filename atomically:YES];
您只需要设置文件名。
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsDir = [paths objectAtIndex:0];
NSString *filename = [docsDir stringByAppendingPathComponent:@"myFilename.jpg"];
要将图像恢复为 UIImage,请执行以下操作:
NSData *data = [NSData dataWithContentsOfFile:filename;
if(data != nil)
UIImage *image = [UIImage imageWithData:data];
【讨论】:
非常感谢!这是非常具体的,所以文件名只是一个 NSString?当我需要取回照片时,我还使用文件名作为 NSString,而不是考虑照片的文件路径,如 /document/resource/ 或类似的东西? 添加了几行来解释这一点 - 是的,在这种情况下它只是一个 NSString 但你需要在文档目录前面加上前缀。 再次感谢!这对我帮助很大!以上是关于如何在 IOS 中保存新令牌照片的主要内容,如果未能解决你的问题,请参考以下文章
如何在 iOS9 中使用 PHPhotolibrary 将照片保存在带有元数据的相册中?