У меня есть код, который проверит, находится ли изображение на телефоне или нет (имя, полученное из БД), и если нет, он запускает этот код:
NSString *urlString = [NSString stringWithFormat: @"http://www.vegashipster.com/%@",image_path];
NSData *imageData = [[NSData alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]];
NSLog(@"saving jpg");
UIImage *image = [[UIImage alloc] initWithData:imageData];//1.0f = 100% quality
[UIImageJPEGRepresentation(image, 1.0f) writeToFile:myFilePath atomically:YES];
NSLog(@"saving image done");
NSLog(@"URL String: %@",urlString);
NSLog(@"http://www.vegashipster.com/%@",image_path);
rest_image = [UIImage imageNamed:image_path];
[image release];
[imageData release];
Этот кодна симуляторе работает нормально, но на айфоне экран зависает на несколько секунд (загрузка изображения, я думаю), затем загружает страницу, но изображение не видно.В следующий раз, когда вы нажмете на эту страницу, нет остановки.Поэтому я считаю, что файл создается, но это испорченный файл изображения, и поэтому он не отображается.
Я уже разбил этот код, чтобы он работал в своем собственном потоке, и снова он работаетв симуляторе.Я думал, что если бы он работал за кулисами, было бы меньше шансов, что данные изображения будут испорчены, но происходит точно так же (минус замораживание).Кто-нибудь знает, что я делаю не так с этим кодом?Спасибо за любую помощь и комментарии.
Редактировать
И да, загружаемые изображения строго .jpg
Редактировать 2
Я видел:
Убедитесь, что вы пишете в каталог DOCUMENTS, к которому у вас есть права на чтение и запись.В противном случае вы не получите никаких файлов.
при http://www.iphonedevsdk.com/forum/iphone-sdk-development/15628-file-weirdness-files-written-disk-do-not-appear-nsfilemanager-defaultmanager.html.Может ли это быть моей проблемой?
NSString *image_path = [[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 5)] stringByReplacingOccurrencesOfString:@"../"
NSString *myFilePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:image_path];
Последнее редактирование
Ну, я нашел то, что я считаю своим ответом на Как я могу получить доступный для записипуть на айфон? .Это в значительной степени заявляет, что я не могу сохранить файлы изображений, где мои собственные файлы изображений находятся внутри сборки.Если это неправильно, пожалуйста, дайте мне знать, и я попробую ваш путь.