2011-03-10 100 views
5

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

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

这可能吗?

+0

@Joe:谢谢:P – jarryd 2011-03-30 19:32:34

回答

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); 
} 
+0

谢谢。我想知道图像的管理。一旦保存到文件夹,如何获取存储图像的url? – jarryd 2011-03-10 19:42:49

+0

@ Helium3我已经更新了如何保存为pngs的示例(尽管jpgs中有类似的'UIImageJPEGRepresentation'方法),如何检索保存的图像以及如何列出目录的内容。 – theChrisKent 2011-03-10 19:50:49

+0

谢谢。如果图像没有名字怎么办?有没有一种方法可以将图像保存到设备中并获取url,以便可以存储url以用于以后的图像回调?或者应该为照相机捕获的每个图像动态创建名称? – jarryd 2011-03-10 22:33:50

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]; 

注意,在这个例子中,图像存储在您的“文档”文件夹的子文件夹,该文件夹被称为“anyFolderName”。变量docsPath包含您的目录的“文档”文件夹的路径。

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

+0

保存1000个图像到iPhone会导致任何问题?像记忆体管理问题? – 2013-12-18 09:47:47