2012-05-29 3 views
0

Мне удалось сохранить мой массив файлов в моем NSDocumentDirectory. Вот что я использовал:NSDocumentDirectory loading images

 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *documentsDir = [paths objectAtIndex:0]; 
     NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"Images%d.png", i]]; 
     ALAssetRepresentation *rep = [[info objectAtIndex: i] defaultRepresentation]; 
     UIImage *image = [UIImage imageWithCGImage:[rep fullResolutionImage]]; 
     //NSData *imageData = UIImagePNGRepresentation(image); 
     [UIImageJPEGRepresentation(image, 1.0) writeToFile:savedImagePath atomically:YES]; 

Моя проблема заключается в том, как загружать изображения с этим форматом @"Images%d.png" в этот код:

.h

@property (strong, nonatomic) NSMutableArray *images; 

.m

self.images = ?????? 
+0

в основном и хотят, чтобы преобразовать изображение в детские из JPG ?? –

+0

нет Я хочу загрузить его в awakeFromNib. – Bazinga

+0

использовать переменную count, чье начальное значение равно 0 Таким образом, это будет NSString * savedImagePath = [documentsDir stringByAppendingPathComponent: [NSString stringWithFormat: @ "Images% d.png", count]], после сохранения im age count будет count ++; каждый раз, когда вы получите новый счет –

ответ

0

Вот код для чтения имен изображений из комплекта. Измените путь пачки пакетов к папке каталога документов. Фрагмент кода даст вам массив отсортированных имен изображений, также избавит вас от использования for-loop для чтения имен.

NSString *bundlePath = [[NSBundle mainBundle] bundlePath]; 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSArray *dirContents = [fileManager contentsOfDirectoryAtPath:bundlePath error:nil]; 
NSPredicate *filter = [NSPredicate predicateWithFormat:@"self ENDSWITH '.png'"]; 
NSArray *unsortedImages = [dirContents filteredArrayUsingPredicate:filter]; 
NSArray *sortedImages = [unsortedImages 
        sortedArrayUsingComparator: 
        ^NSComparisonResult (id obj1, id obj2){ 
         return [(NSString*)obj1 compare:(NSString*)obj2 
               options:NSNumericSearch]; 
        }]; 

Дружеский совет: Избегайте хранения любых загружаемых данных/изображений в NSDocumentDirectory каталоге, приложение может получить отклонены. Используйте вместо этого NSCachesDirectory. Пожалуйста, прочтите это post и соответствующие документы на портале разработчиков Apple.

Cheers !!
Amar.

+0

Я имею в виду, как хранить их в массиве в awakeFromnib после загрузки? – Bazinga

+0

У вас есть все имена файлов изображений с вами, прокрутите ** массив sortedImages **, создайте ** UIImage ** с помощью ** initWithContentsOfFile: ** method (Создайте путь к изображению, добавив имя файла в путь NSDocumentDirectory) и загрузите этот экземпляр изображения для вашего ** изображения ** измененного массива. Не забудьте инициализировать свой изменяемый массив, прежде чем добавлять к нему изображения. Этот фрагмент кода будет работать с любым методом, поскольку он выполняет только операции ввода-вывода. Не загружайте слишком много изображений, так как вы можете столкнуться с проблемами памяти и производительности. Надеюсь это поможет! – Amar

+0

Im загружает его в iCarousel. не совсем понимаю, что вы говорите. можете ли вы разместить образец кода? – Bazinga

0

Вы сохраняете расширение png как файл jpg. Я считаю, что это должно работать:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *documentsDir = [paths objectAtIndex:0]; 
    NSString *savedImagePath = [documentsDir stringByAppendingPathComponent:[NSString stringWithFormat:@"Images%d.jpg", i]]; 
    ALAssetRepresentation *rep = [[info objectAtIndex: i] defaultRepresentation]; 
    UIImage *image = [UIImage imageWithCGImage:[rep fullResolutionImage]]; 
    [UIImageJPEGRepresentation(image, 1.0) writeToFile:savedImagePath atomically:YES]; 

    // to load the image later: 
    UIImage *imageFromDisk = [UIImage imageWithContentsOfFile:savedImagePath]; 
1

для сохранения изображений в NSDocumentDirectory

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
     NSString *documentsDirectory = [paths objectAtIndex:0];//m_nImageIndex 
     NSString *imagename = [NSString stringWithFormat:@"savedImage%d.png",m_nImageIndex]; 
     NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:imagename]; 
     // Get PNG data from following method 
     NSData *myData =  UIImagePNGRepresentation(image); 
     // It is better to get JPEG data because jpeg data will store the location and other related information of image. 
     [myData writeToFile:savedImagePath atomically:NO]; 
     //[UIImageJPEGRepresentation(image ,1) writeToFile:savedImagePath atomically:NO]; 

для получения изображений

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,  NSUserDomainMask, YES); 
      NSString *documentsDirectory = [paths objectAtIndex:0]; 
      NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"savedImage%d.png",indexPath.row]]; 
      UIImage *img = [UIImage imageWithContentsOfFile:getImagePath]; 

      cell.backgroundView = [[UIImageView alloc] initWithImage:img];