UIImage из файла проблема - PullRequest
       1

UIImage из файла проблема

7 голосов
/ 28 апреля 2011

Я пытаюсь загрузить сохраненное изображение, но когда я проверяю UIImage, оно возвращается как ноль.Вот код:

UIImage *img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"/var/mobile/Applications/B74FDA2B-5B8C-40AC-863C-4030AA85534B/Documents/70.jpg" ofType:nil]];

Затем я проверяю img, чтобы узнать, равен ли он нулюСписок каталога показывает файл, что я делаю не так?

Ответы [ 4 ]

18 голосов
/ 28 апреля 2011

Вам нужно указать на каталог документов в вашем приложении, например, так:

- (NSString *)applicationDocumentsDirectory
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
    return basePath;
}

Использование:

UIImage *img = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/70.jpg",[self applicationDocumentsDirectory]]];
8 голосов
/ 28 апреля 2011

Во-первых, вы используете pathForResource неправильно, правильный путь будет следующим:

[[NSBundle mainBundle] pathForResource:@"70" ofType:@"jpg"]

Вся идея объединения заключается в том, чтобы абстрагировать путь ресурса таким образом, чтобы он всегда был действительным, независимо от того, где всистема, в которой находится ваше приложение.Но если вам нужно всего лишь загрузить это изображение, я бы порекомендовал вам использовать imageNamed: поскольку он автоматически обрабатывает обнаружение дисплея с высоким разрешением сетчатки на iPhone и загружает соответствующий ресурс «автоматически»:

UIImage *img = [UIImage imageNamed:@"70.jpg"];

Чтобы легко поддерживать обычное разрешение и разрешение сетчатки, вам нужно иметь два ресурса в вашем комплекте приложений, 70.jpg и 70@2x.jpg, с ресурсом @ 2x, удвоенным с и height.

5 голосов
/ 28 апреля 2011

Попробуйте загрузить UIImage с помощью:

[UIImage imageNamed:@"something.png"]

Он ищет изображение с указанным именем в основном комплекте приложения.Также приятно: автоматически выбирается версия Retina (xyz@2x.png) или не Retina (xyz.png).

3 голосов
/ 28 апреля 2011

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

Вместо этого следует использовать следующее:

UIImage *img = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"70" ofType:@"jpg"]];

или вы можете использовать, но медленнее, чем указано выше:

UIImage *img = [UIImage imageNamed:@"70.jpg"];

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