提问人:SWAMY CHUNCHU 提问时间:10/24/2016 更新时间:10/24/2016 访问量:2868
如何在Array ios中添加图像?
How to add images in Array ios?
答:
2赞
Ekta Padaliya
10/24/2016
#1
您可以像这样将 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赞
Andrea
10/24/2016
#2
不要将图像存储到数组或字典中,除非您要创建缓存,但缓存将来应该会逐出其内容。
您正在使用的移动设备,即使功能强大,它也没有与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;
}
评论