答案 0 :(得分:2)
您可以将UIImage转换为NSData,如下所示:
如果是PNG图片
UIImage *image = [UIImage imageNamed:@"imageName.png"];
NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
如果是JPG图片
UIImage *image = [UIImage imageNamed:@"imageName.jpg"];
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);
将imageData添加到数组:
[self.arr addObject:imageData];
从NSData加载图片:
UIImage *img = [UIImage imageWithData:[self.arr objectAtIndex:0]];
答案 1 :(得分:1)
除非您想创建缓存,否则不要将图像存储到数组或字典中,但缓存应在将来逐出它们的内容。
您正在使用移动设备,即使功能强大,它也没有与Mac相同的硬件。
记忆是一种有限的资源,应该通过判断来管理
如果你想出于性能原因暂时缓存这些图像,可以使用NSCache,基本上就像可变字典一样,但它是线程安全的。
如果你想在本地保存它们很好但只是保留它们在数组中的路径。
- (NSString*) getDocumentsPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsPath = paths[0]; //Get the document directory
return documentsPath;
}
- (NSString*) writePNGImage: (UIImage*) image withName: (NSString*) imageName {
NSString *filePath = [[self getDocumentsPath] stringByAppendingPathComponent:imageName]; // Add file name
NSData *pngData = UIImagePNGRepresentation(image);
BOOL saved = [pngData writeToFile:filePath atomically:YES]; //Write the file
if (saved) {
return filePath;
}
return nil;
}
- (UIImage*) readImageAtPath:(NSString*) path {
NSData *pngData = [NSData dataWithContentsOfFile:path];
UIImage *image = [UIImage imageWithData:pngData];
return image;
}