在App中保存图像

时间:2012-01-10 03:55:32

标签: iphone objective-c ios xcode

我需要做的是,拍照或从照片库中选择一种形式,然后将其保存在应用程序中,以便在应用程序内的任何其他地方都看不到它。例如,它就像“我的秘密文件夹”,其中图像只能在应用程序中看到。我没有制作秘密文件夹应用程序....所以不要担心... =)

对不起,我没有太多代码要展示,但我不知道该怎么做。

我正在查看富文本文件,并想知道这是否可行,如果它甚至可以存储图像,或者我必须采用不同的方式。

谢谢, Denali Creative LLC

P.S。

我要做的是在应用程序中保存多于一个图像。因此,我需要能够将图像或图像的保存名称命名为文件名。

7 个答案:

答案 0 :(得分:3)

  • 使用UIImagePickerController的查找/搜索代码
  • 使用Convert Image to Data
  • 将图片转换为数据
  • 将数据保存到文档文件夹。没有其他应用可以访问您的文档文件夹。 文件夹,请参阅此帖子Save Image to Disk
  • 从磁盘读取数据,转换为图像并显示以反向处理。

答案 1 :(得分:2)

您可以将图像保存在应用程序的沙盒中

Documents文件夹在同步期间是备份,Library/Caches文件夹不是。这使您可以选择保密级别。

获得图像(UIImagePickerController以及< UIImagePickerControllerDelegate>协议后面的类)后,将其转换为NSData并将其存档到所需的文件夹。

这样的东西
NSData * imageData = UIImagePNGRepresentation (image);
NSData * imageData = UIImageJPEGRepresentation (image);

取消归档NSData时,可以使用

创建映像
[UIImage imageWithData:data];

答案 2 :(得分:0)

所以你不希望其他应用程序识别你的图像。我不确定,但这可能会对你有所帮助。而不是标准的png或jpg扩展,只需替换像.abc这样其他应用程序无法识别的虚拟扩展。可能还有其他方法,但我正在使用这种方法。

答案 3 :(得分:0)

从照片选择器委托回调中的PhotoPicker信息字典中提取图像。

在/ Documents文件夹下的某个位置设置一个子目录,然后在那里写下图像。

 NSData *pngData = UIImagePNGRepresentation(_myUIImage);
 BOOL successFlag = [pngData writeToFile:documentDirectorySubFolder options:0x0 error:&error];

答案 4 :(得分:0)

使用UIImagePickerController类并实现它委托

图像选择器视图委托的委托方法

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info ;

当您从照片库中选择照片或从相机拍照时,会调用此方法。最好将图像保存在核心数据库中,然后只能在您的应用中显示。

答案 5 :(得分:0)

我认为这个想法可能会对你有所帮助。您可以使用SQLIte创建一个应用程序。您可以在应用中保存图像。但问题是您在应用中保存的图像并保持对其他人的安全,您必须从图库中手动删除

答案 6 :(得分:0)

我建议您将图片存储在Documents Directory中并从那里阅读,因为它是存储应用内容的最合适位置。


将图像保存到文档目录

-(void)saveImage:(UIImage *)image withFileName:(NSString *)imageName ofType:(NSString *)extension inDirectory:(NSString *)directoryPath {
    if ([[extension lowercaseString] isEqualToString:@"png"]) {
        [UIImagePNGRepresentation(image) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"png"]] options:NSAtomicWrite error:nil];
    } else if ([[extension lowercaseString] isEqualToString:@"jpg"] || [[extension lowercaseString] isEqualToString:@"jpeg"]) {
        [UIImageJPEGRepresentation(image, 1.0) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"jpg"]] options:NSAtomicWrite error:nil];
    } else {
        NSLog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", extension);
    }
}

从文档目录加载图片

-(UIImage *)loadImage:(NSString *)fileName ofType:(NSString *)extension inDirectory:(NSString *)directoryPath {
    UIImage * result = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.%@", directoryPath, fileName, extension]];
    return result;
}

如何对

//Definitions
NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

//Save Image to Directory
[self saveImage:imageFromURL withFileName:@"My Image" ofType:@"png" inDirectory:documentsDirectoryPath];

//Load Image From Directory
UIImage * imageFromWeb = [self loadImage:@"My Image" ofType:@"png" inDirectory:documentsDirectoryPath];