Как получить изображения из каталога в iPhone? - PullRequest
0 голосов
/ 06 декабря 2011

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

NSString *bundleRoot = [[NSBundle mainBundle] bundlePath];
NSString *albumPath = [bundleRoot stringByAppendingString:@"/Album"];
NSString *savedImagePath = [bundleRoot stringByAppendingPathComponent: @"newImage11.jpeg" ]; UIGraphicsBeginImageContext(drawImage.image.size); 
CGContextRef ctx = UIGraphicsGetCurrentContext();
 [drawImage.layer renderInContext:ctx]; 
UIImage *editedImage = UIGraphicsGetImageFromCurrentImageContext();
NSData *editedImageData = UIImageJPEGRepresentation(editedImage, 1.0); UIGraphicsEndImageContext(); 
[editedImageData writeToFile:savedImagePath atomically:YES];

Здесь drawImage - это IBOutlet из UIImageView, который содержит изображение. Этот код сохранил файл newImage11.jpeg в каталоге моего альбома, который также имеет размер. но когда я получаю изображение из каталога альбома, оно дает мне пустое изображение. Я использовал следующий код для получения изображения

NSString *img = [onlyJPGs objectAtIndex:currentIndex+numberToAdd]; 
UIImage *tempImage = [UIImage imageNamed:img]; 
imageButton.tag = img; 
[imageButton setImage:tempImage forState:UIControlStateNormal]; 
[imageButton addTarget:nil action:@selector(goToEdit:) forControlEvents:UIControlEventTouchUpInside]; 
currentIndex+=numberToAdd;

onlyJPGs - это массив, в котором хранятся имена всех изображений, содержащихся в каталоге Album. Я уверен, что мое приложение сохраняет изображение в каталоге Album, потому что, когда я перечисляю содержимое каталога Album в ImageEditing.app с помощью терминала, он показывает мне файл newImage11.jpeg. Любая помощь будет полезна.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2011

Проблема проста: вы пытаетесь сохранить отредактированное изображение в пакет. На самом деле пакет приложения «Только для чтения».Для этого типа прав чтения и записи вы можете использовать либо каталог документов, либо библиотеку.Вы можете получить путь к каталогу документа, следуя фрагменту кода.

NSString *path=[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
0 голосов
/ 06 декабря 2011

Во-первых, вы не можете записать в bundlePath, комплект дырочных приложений доступен только для чтения.

Во-вторых, вы уверены, что создали каталог в группе ресурсов вашего проекта, а не в группе (значок папки группы желтый, а папки синий).

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

Вы можете записывать файлы в каталог документов:

NSString *documentPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

Эти каталоги будут автоматически синхронизироваться с iCould и, согласно Apple, должны содержать только файлы, созданные пользователем. Любые файлы, которые ваше приложение может воссоздать или загрузить снова, должны находиться в каталоге caches:

NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
...