iOS:在 UIImageView 中保存图片

Posted

技术标签:

【中文标题】iOS:在 UIImageView 中保存图片【英文标题】:iOS: Saving A Picture In UIImageView 【发布时间】:2012-03-27 19:12:29 【问题描述】:

我有一个应用程序,允许用户从他们的相机胶卷中选择一张图片,并将其显示在 UIImageView 中。我通常使用这种方法将文本保存在文本字段中,并且我认为它也适用于图像,但我遇到了一些问题。没有错误,但它根本不保存图像。

这是我正在使用的相关代码:

.h:

#define kFilename9        @"PGdata.plist"
...
- (NSString *)dataFilePath;

.m:

- (NSString *)dataFilePath 
    NSArray *paths = NSSearchPathForDirectoriesInDomains(
                                                         NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    return [documentsDirectory stringByAppendingPathComponent:kFilename9];


- (void)applicationDidEnterBackground:(NSNotification *)notification 
    NSMutableArray *array = [[NSMutableArray alloc] init];
    [array addObject:image.image];

    [array writeToFile:[self dataFilePath] atomically:YES];

- (void)viewDidLoad

    ...  

    NSString *filePath = [self dataFilePath];
    if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) 
        NSArray *array = [[NSArray alloc] initWithContentsOfFile:filePath];
        image.image = [array objectAtIndex:0];
    

    UIApplication *app = [UIApplication sharedApplication];
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(applicationDidEnterBackground:)
                                                 name:UIApplicationDidEnterBackgroundNotification
                                               object:app];

    [super viewDidLoad];


【问题讨论】:

【参考方案1】:

您必须首先使用 UImagePNGRepresentation 或 UIImageJPEGRepresentation 将 UIImage 转换为 PNG 或 JPG。这些函数返回 NSData,然后您可以将其写入文件。

【讨论】:

【参考方案2】:

你可以按照这种方式保存。

UIImage * image;//the image you want to save


 NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    NSString *docDir=[paths objectAtIndex:0];

    NSFileManager *filemanager=[NSFileManager defaultManager];

    NSData   *  imagedata=UIImageJPEGRepresentation(image,1);
    NSString *savePath= [docDir stringByAppendingPathComponent:@"imageName.jpg"];

    BOOL isdic=NO;
    BOOL isHave=[filemanager fileExistsAtPath:savePath isDirectory:&isdic];
    if (isHave==YES&&isdic==NO) 
        [filemanager removeItemAtPath:savePath error:nil];
    

   BOOL result= [imagedata writeToFile:savePath atomically:YES];

【讨论】:

以上是关于iOS:在 UIImageView 中保存图片的主要内容,如果未能解决你的问题,请参考以下文章

iOS6中使用restoreIdentifier保存UIImageView的状态

iOS开发之保存照片到系统相册(Photo Album)

将 UIImageView 和覆盖的 UIView 保存为图像(xcode/iOS)

iOS:问题保存照片

iOS GIF动态图(显示、上传、保存)

iOS 9 中带有 UIImageView 的 UIImageWriteToSavedPhotosAlbum