Не удается получить изображения из папки устройства iPhone - PullRequest
2 голосов
/ 22 июля 2011

Я пытаюсь получить некоторые изображения с устройства (iPhone) и показать их на экране.

Файлы изображений сохраняются на моем устройстве и разделяются в папки, подобные этой: (...) /Documents / 1 / image1.png.

Вот код функции, в которой я пытаюсь получить изображение

-(UIImage *) getImageFromDevice:(NSString *) fileName 
                        idImage:(int)        idImage{

    NSString *path;

    path = [[self dataFilePath] stringByAppendingString:@"/"];
    path = [path stringByAppendingString: [[NSString alloc] initWithFormat:@"%d",idImage]];
    path = [path stringByAppendingString:@"/"];
    path = [path stringByAppendingString:fileName];

    NSLog(@"path = %@", path);

    NSURL *deviceImageUrl = [[NSURL alloc] initWithString:path];
    NSData *imageData = [NSData dataWithContentsOfURL:deviceImageUrl];
    UIImage *deviceImage = [UIImage imageWithData:imageData];

    return deviceImage;

}

И это функция для получения пути кпапка устройства работает нормально:

-(NSString *)dataFilePath{

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    return documentsDirectory;

}

Но когда я устанавливаю NSURL * deviceImageUrl с [[NSURL alloc] initWithString: path] deviceImageUrl становится ноль .

Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 22 июля 2011
//NSURL *deviceImageUrl = [[NSURL alloc] initWithString:path];
//NSData *imageData = [NSData dataWithContentsOfURL:deviceImageUrl];
//UIImage *deviceImage = [UIImage imageWithData:imageData];    
UIImage *deviceImage = [[[UIImage alloc] initWithContentsOfFile:path]autorelease];
1 голос
/ 22 июля 2011

Попробуйте использовать fileURLWithPath: вместо URLWithString:;)

NSURL *deviceImageUrl = [NSURL fileURLWithPath:path]; // autoreleased url

Я тоже всегда путаюсь с этими двумя методами ... они сводят меня с ума.

0 голосов
/ 22 июля 2011

Вы не должны использовать initWithString:, это должно соответствовать формату URL, как описано в RFC.Если вы просто хотите использовать системный путь, используйте это: (не забудьте выпустить его после использования)

NSURL *deviceImageUrl = [[NSURL alloc] initFileURLWithPath:path isDirectory:NO];
...