如何在 Xcode 5 for iOS 中保存和加载图像?

Posted

技术标签:

【中文标题】如何在 Xcode 5 for iOS 中保存和加载图像?【英文标题】:How do I save and load an image in Xcode 5 for iOS? 【发布时间】:2014-09-06 15:35:45 【问题描述】:

我为 iPhone 制作了一款受 Flappy Bird 启发的应用。制作这个应用程序只是为了让我可以学习应用程序制作背后的编程,并希望尽快制作一个更原始和更高级的应用程序。

该应用可以加载从您的照片库或 iPhone 相机拍摄的照片。我使用了这段代码:

- (IBAction)didTapPhoto:(UITapGestureRecognizer *)sender 
    UIActionSheet *actionSheet = [[UIActionSheet alloc]initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Take a Photo", @"Use Photo Library", nil];

    [actionSheet showInView:self.view];


-(void) pickPhotoFromLibrary 
    self.imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

    [self.navigationController presentViewController:self.imagePicker animated:YES completion:nil];


-(void) takePhotoWithCamera 
    self.imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;

    [self.navigationController presentViewController:self.imagePicker animated:YES completion:nil];


-(void) actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex 
    if (buttonIndex == actionSheet.cancelButtonIndex)return;

    switch (buttonIndex) 
        case 0:
            [self takePhotoWithCamera];
            break;
        case 1:
            [self pickPhotoFromLibrary];
        default:
            break;
    


-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
    [picker dismissViewControllerAnimated:YES completion:nil];

    UIImage *image = info[UIImagePickerControllerOriginalImage];

    self.imageView.image = image;

问题是:如何保存加载到ImageView中的图片,然后加载到另一个ViewController中?

我希望用户拍张照片,然后将自己用作飞扬的小鸟。我已经做了 Flappy Bird 课程,并且习惯了不同的 Flappy Bird。

唯一的问题是我希望能够将用户选择的图片保存为 .png 文件,就像它保存在支持文件中一样。图片可以默认保存,例如@"image1",在其他ViewController中可以设置ImageView加载@"image1"。

【问题讨论】:

【参考方案1】:

将图片保存到 iPhone 本地文件:

NSString *imagePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *imageName = [imagePath stringByAppendingPathComponent:@"MainImage.jpg"];
NSData *imageData = UIImageJPEGRepresentation(imageView.image, 1.0);
BOOL result = [imageData writeToFile:imageName atomically:YES];
NSLog(@"Saved to %@? %@", imageName, (result? @"YES": @"NO"));

加载保存的图片:

NSString *imagePath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
NSString *imageName = [imagePath stringByAppendingPathComponent:@"MainImage.jpg"];
UIImage *image = [UIImage imageWithContentsOfFile:imageName];

【讨论】:

谢谢!对不起,我是新手。我必须更改或自定义此代码中的任何内容以适应我的代码吗?

以上是关于如何在 Xcode 5 for iOS 中保存和加载图像?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 .ipa 在 Xcode for iOS 中运行自动化 XCUITests

IOS 6.0 xcode 4.5 编译错误#import 代码保存在类外的文件中

iOS - Xcode升级到5.1& iOS升级到iOS7.1问题:Undefined symbols for architecture x86_64

在 Xcode for iOS 中导入 Points of Interest 仪器的路标代码名称

如何下载 xcode 6 测试版?以及如何将 xcode 5 和 xcode 6 保存在同一台机器上? [关闭]

如何在 Xcode 5 中使用不同的图像 iOS 6 和 iOS 7 [关闭]