如何在Array ios中添加图像?

时间:2016-10-24 07:48:35

标签: ios objective-c ios7 ios5 ios7.1

下面的图像单击共享/保存按钮后编辑图像如何在阵列中添加图像。我应该在tableview中显示它并在本地保存。

enter image description here

2 个答案:

答案 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;
}