如何在 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 将照片保存在带有元数据的相册中?

如何使用 iOS SDK 保存 LinkedIn 访问令牌?

如何在 iOS 5 中连续拍摄两张照片

如何在 IOS 中查找照片资产的标识符

iOS 将照片保存在特定应用的相册中

如何在到期后使用 OAuth 2.0 以及 iOS 应用程序中的 Youtube API 获取新的访问令牌