将图像存储到iphone

时间:2011-03-10 19:35:16

标签: iphone cocoa-touch

是否可以将iphone上的相机拍摄的图像保存到自定义目录或iPhone上的某个位置,而不是保存到相机胶卷?

我想将图像保存到设备,然后在以后阶段访问,而不是使用ALAssets从相机胶卷读取。

这可能吗?

2 个答案:

答案 0 :(得分:5)

是的,您可以将它们保存到应用程序的文档文件夹中。这是一个例子:

// Create path
NSString  *imagePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/ImageName.png"];

// Write image to PNG
[UIImagePNGRepresentation(image) writeToFile:imagePath atomically:YES];

要检索它:

UIImage *image = [UIImage imageWithContentsOfFile:imagePath];

列出目录中的所有文件:

NSFileManager *manager = [NSFileManager defaultManager];
NSArray *fileList = [manager directoryContentsAtPath:[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]];
for (NSString *s in fileList){
    NSLog(s);
}

答案 1 :(得分:1)

用这个来写

// imageData = NSData object
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *imageCacheDirPath = [docsPath stringByAppendingPathComponent:@"anyFolderName"];
NSString *imageCachePath = [imageCacheDirPath stringByAppendingPathComponent:@"image.jpg"];
[imageData writeToFile:imageCachePath atomically:YES];

以下片段再次读取数据:

// Get path of image
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docsPath = [paths objectAtIndex:0];
NSString *imageCacheDirPath = [docsPath stringByAppendingPathComponent:@"anyFolderName"];
NSString *imageCachePath = [imageCacheDirPath stringByAppendingPathComponent:@"image.jpg"];
NSData *imageData = [NSData dataWithContentsOfFile:imageCachePath];

请注意,在此示例中,图像存储在“Documents”文件夹的子文件夹中,此文件夹名为“anyFolderName”。变量docsPath包含目录“Documents”文件夹的路径。

请注意,这只是我使用的代码,从iOS 3.0开始,可能有更好的方法将图像存储到应用的Documents文件夹中。