iOS设备上本地存储图像(Storing images locally on an iOS devi

2019-07-18 17:49发布

在某些iOS照片相关的应用存储图像与应用程序的地方比照片库中的其他创建的。 例如脂肪展位显示了在应用程序启动时的与应用程序创建的照片滚动列表。 注意:这些照片是坚持W / O用户明确地将它们保存到照片库。 什么是保存和持久的图像iOS应用程序中最简单的方法是什么?

唯一的持久存储我熟悉NSUserDefaults的是和钥匙链。 不过,我从来没有听说过这些用于存储大块数据,如图像。 现在,我想知道如果核心数据是最简单的方法。

Answer 1:

最简单的方法是将其保存在应用程序的文件目录并保存,象这样的NSUserDefaults的路径:

NSData *imageData = UIImagePNGRepresentation(newImage);

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *imagePath =[documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png",@"cached"]];

NSLog(@"pre writing to file");
if (![imageData writeToFile:imagePath atomically:NO]) 
{
    NSLog(@"Failed to cache image data to disk");
}
else
{
    NSLog(@"the cachedImagedPath is %@",imagePath); 
}

然后保存的ImagePath在一些字典NSUserDefaults的中或者无论你想,然后检索它只是做:

 NSString *theImagePath = [yourDictionary objectForKey:@"cachedImagePath"];
 UIImage *customImage = [UIImage imageWithContentsOfFile:theImagePath];


Answer 2:

对于斯威夫特:

let imageData = UIImagePNGRepresentation(selectedImage)
let paths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as String
let imagePath = paths.stringByAppendingPathComponent("cached.png")

if !imageData.writeToFile(imagePath, atomically: false)
{
   println("not saved")
} else {
   println("saved")
   NSUserDefaults.standardUserDefaults().setObject(imagePath, forKey: "imagePath")
}

对于雨燕2.1:

let imageData = UIImagePNGRepresentation(selectedImage)
let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
let imageURL = documentsURL.URLByAppendingPathComponent("cached.png")

if !imageData.writeToURL(imageURL, atomically: false)
{
    print("not saved")
} else {
    print("saved")
    NSUserDefaults.standardUserDefaults().setObject(imageData, forKey: "imagePath")
}

stringByAppendingPathComponent是雨燕2.1不可用,所以你可以使用URLByAppendingPathComponent. 获取更多信息点击这里。



Answer 3:

可以通过存储二进制数据和核心数据做它, 但它不推荐 。 有一种更好的方式 - 尤其是对的照片。 您的应用程序,只有您的应用程序可以访问的文件/文件目录。 我建议从这里开始的概念,以及如何访问它。 它相对比较简单。 你可能想用这个核心数据存储的文件路径,元数据等结合http://developer.apple.com/library/mac/#documentation/FileManagement/Conceptual/FileSystemProgrammingGUide/FileSystemOverview/FileSystemOverview.html



文章来源: Storing images locally on an iOS device