2012-01-10 6 views
3

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

Прошу прощения, у меня нет большого кода для показа, но я понятия не имею, как это сделать.

Я смотрел на Rich Text File и задавался вопросом, может ли это пойти, и если он может даже хранить изображения, или если я должен сделать это по-другому.

Спасибо, Denali Креатив ООО

P.S.

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

ответ

2

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

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

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

Что-то вроде

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

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

[UIImage imageWithData:data]; 
0

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

0

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

Создайте подкаталог где-нибудь под папкой/Documents и напишите изображение там.

NSData *pngData = UIImagePNGRepresentation(_myUIImage); 
BOOL successFlag = [pngData writeToFile:documentDirectorySubFolder options:0x0 error:&error]; 
3
  • Поиск Поиск кода/для использования UIImagePickerController
  • Преобразовать изображение к данным с использованием Convert Image to Data
  • Сохранить данные в папке для документов. Никакие другие приложения не могут получить доступ к папке ваших документов. папка, см. Этот пост Save Image to Disk
  • Чтение данных с диска, преобразование в изображение и отображение в обратном направлении.
+0

Ссылка «Конвертировать изображение в данные» не работает. Отправьте ссылку еще раз ... –

+0

Можете ли вы сохранить несколько изображений в файл? Также как я могу выбрать, какое изображение я бы хотел загрузить? благодаря –

0

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

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

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

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

0

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

0

Я рекомендую хранить изображения в 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; 
} 

How-To

//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]; 
Смежные вопросы