2016-10-24 2 views
-3

ниже Изображение После редактирования изображения, когда я нажимаю кнопку общего доступа/сохранения, как добавлять изображения в массив. я должен отображаться в виде таблицы и сохранять его локально.Как добавить изображения в Array ios?

enter image description here

+0

Вам необходимо сохранить изображение DATA в массиве, а не изображения. –

+0

Не могли бы вы объяснить, как сохранить и получить в массиве, который я хочу отобразить в tableview? –

+0

Вы можете иметь массив изображений 'var images_array = [UIImage]()' или массив данных 'var data_array = [NSData]()' и извлекать изображения, подобные этому 'let image = UIImage (data: data_array [i])'. –

ответ

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

Не хранить изображения в массив или словарь, если вы не хотите, чтобы создать кэш, но кэш должен выселить их содержание в будущем.
Вы работаете на мобильном устройстве, которое, даже если оно мощное, не имеет того же оборудования вашего 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; 
} 
Смежные вопросы