Сохранить изображение в приложении - PullRequest
3 голосов
/ 10 января 2012

Мне нужно сделать снимок или выбрать одну из библиотек фотографий, а затем сохранить ее в приложении, чтобы ее не было видно нигде, кроме как внутри приложения.Например, это будет похоже на «Моя секретная папка», где изображения видны только внутри приложения.Я не делаю приложение для секретных папок .... Так что не волнуйтесь ... =)

Извините, у меня не так много кода, чтобы показать, но я понятия не имею, как это сделать.

Я смотрел на файл с расширенным текстом и мне было интересно, можно ли это сделать, и может ли он даже хранить изображения, или мне нужно сделать это по-другому.

Спасибо, Denali Creative LLC

PS

Что я хочу сделать, это сохранить БОЛЬШЕ, ЧЕМ ОДИН образ в приложении.Поэтому мне нужно будет указать, какое изображение или какое изображение будет сохранено в имени файла.

Ответы [ 7 ]

3 голосов
/ 10 января 2012
  • Поиск / Поиск кода для использования UIImagePickerController
  • Преобразование изображения в данные с использованием Преобразование изображения в данные
  • Сохранение данных в папке документа.Никакие другие приложения не могут получить доступ к вашей папке документов.папку, см. этот пост Сохранить образ на диск
  • Считать данные с диска, преобразовать в образ и отобразить в обратном порядке.
2 голосов
/ 10 января 2012

Вы можете сохранить изображения в изолированной программной среде приложения

. Папка Documents является резервной копией во время синхронизации, а папка Library/Caches - нет.Это дает вам выбор между уровнями секретности.

Когда у вас есть изображение (UIImagePickerController и класс, соответствующий протоколу <<code>UIImagePickerControllerDelegate>), преобразуйте его в NSData и заархивируйте в нужную папку.

Что-то вроде

NSData * imageData = UIImagePNGRepresentation (image);
NSData * imageData = UIImageJPEGRepresentation (image);

, когда вы разархивируете NSData, вы можете создать образ с помощью

[UIImage imageWithData:data];
0 голосов
/ 10 февраля 2015

Я рекомендую вам сохранить изображения в Documents Directory и прочитать их оттуда, поскольку это наиболее подходящее место для хранения содержимого приложения.


Сохранить изображение в каталоге документов

-(void)saveImage:(UIImage *)image withFileName:(NSString *)imageName ofType:(NSString *)extension inDirectory:(NSString *)directoryPath {
    if ([[extension lowercaseString] isEqualToString:@"png"]) {
        [UIImagePNGRepresentation(image) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"png"]] options:NSAtomicWrite error:nil];
    } else if ([[extension lowercaseString] isEqualToString:@"jpg"] || [[extension lowercaseString] isEqualToString:@"jpeg"]) {
        [UIImageJPEGRepresentation(image, 1.0) writeToFile:[directoryPath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.%@", imageName, @"jpg"]] options:NSAtomicWrite error:nil];
    } else {
        NSLog(@"Image Save Failed\nExtension: (%@) is not recognized, use (PNG/JPG)", extension);
    }
}

Загрузить изображение из каталога документов

-(UIImage *)loadImage:(NSString *)fileName ofType:(NSString *)extension inDirectory:(NSString *)directoryPath {
    UIImage * result = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@.%@", directoryPath, fileName, extension]];
    return result;
}

Инструкции

//Definitions
NSString * documentsDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

//Save Image to Directory
[self saveImage:imageFromURL withFileName:@"My Image" ofType:@"png" inDirectory:documentsDirectoryPath];

//Load Image From Directory
UIImage * imageFromWeb = [self loadImage:@"My Image" ofType:@"png" inDirectory:documentsDirectoryPath];
0 голосов
/ 10 января 2012

Я думаю, что эта идея может помочь вам.Вы можете создать одно приложение для этого, как с SQLIte.в котором вы сохраняете свои изображения в вашем приложении.но проблема в том, что изображения, которые вы сохраняете в своем приложении и защищаете их от других, необходимо вручную удалить из галереи изображений

0 голосов
/ 10 января 2012

используйте класс UIImagePickerController и реализуйте его делегирование

Существует метод делегата делегата представления выбора изображений

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info ;

Этот метод вызывается, когда вы выбираете изображение из библиотеки фотографий или делаете снимок с камеры. Хорошо сохранять ваши изображения в базовой базе данных, тогда это видно только в вашем приложении.

0 голосов
/ 10 января 2012

Извлеките свое изображение из информационного словаря PhotoPicker в обратном вызове делегата выбора фотографий.

Установите подкаталог где-нибудь в папке / Documents и напишите туда изображение.

 NSData *pngData = UIImagePNGRepresentation(_myUIImage);
 BOOL successFlag = [pngData writeToFile:documentDirectorySubFolder options:0x0 error:&error];
0 голосов
/ 10 января 2012

Так что вы не хотите, чтобы другое приложение распознавало ваши изображения. Я не уверен, но это может помочь вам. Вместо стандартного расширения png или jpg просто замените фиктивное расширение, например .abc, которое другие приложения не могут распознать. Могут быть и другие способы, но я использовал этот метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...