Проблема при копировании изображения из ресурсов проекта в папку документов в Objective-C - PullRequest
1 голос
/ 04 марта 2011

У меня проблема с копированием изображения из ресурсов проекта в папку «Документы».

Я использую copyItemAtPath NSFileManager.Когда я тестирую его на симуляторе, он работает нормально, но когда я делаю это на устройстве (iPod или iPad), изображение копируется с ошибками.

Используя PhoneView, я вижу скопированное изображение, но когда я его открываю, изображение пустое.Когда я открываю его в Firefox, появляется следующее сообщение:

Изображение «file: ///../logo.png» не может быть отображено, поскольку оно содержит ошибки.

NSFileManager *fileMgr = [NSFileManager defaultManager];
NSString *logoPath = [webPath stringByAppendingPathComponent:@"logo"];

if (![fileMgr fileExistsAtPath:logoPath]) {
   NSString *resourcePath = [[NSBundle mainBundle] pathForResource:@"logo" ofType:@"png"];
   NSError *error = nil;
   BOOL isSuccess = [fileMgr copyItemAtPath:resourcePath toPath:logoPath error:&      
   if (!isSuccess || error) {
      if (error)
         NSLog(@"ERROR copy logo: %@", [error description]);
      }
   }

}

Есть идеи?

Заранее спасибо.

Ответы [ 7 ]

1 голос
/ 04 марта 2011

Я не могу найти никаких ошибок в вашем коде, я могу дать только одно предложение

преобразовать ваше изображение в NSData и записать в папку документов

NSData * data; // данные от вашего логотипаизображение

[data writeToFile:<document path> atomically:YES];
0 голосов
/ 10 августа 2013

Древний вопрос, но похоже, что Apple все еще отстой, поэтому проблема все еще существует 2 года спустя.На случай, если кто-то еще столкнется с проблемой, я решил ее так, что в основном объясняет то, что @Rajesh уже сказал:

BOOL success = [UIImagePNGRepresentation([UIImage imageNamed:@"icon"]) 
                   writeToFile:logoPath atomically:YES];
0 голосов
/ 07 апреля 2012

@ mikywan правильно указал, что JPG работает отлично, но изображения PNG, скопированные из комплекта ресурсов, повреждены.

Если кто-то все еще хочет использовать изображения png, вот решение, выберите сборкунастройки на вашей цели и установите «Сжать файлы PNG» на «НЕТ».PNG внутри ресурсов не будут изменены при сборке приложения.

0 голосов
/ 08 марта 2011

Оказалось, проблема с форматом файла. Когда я изменил изображение на JPG, проблема исчезла. Кажется, что Apple меняет PNG-изображения, я не совсем уверен в этом, но то, что я испытал, имеет смысл.

Спасибо!

0 голосов
/ 07 марта 2011

Прежде всего, я хотел бы поблагодарить вас всех за ваши ответы, все они помогли решить мою проблему.

Я не уверен, почему, но когда я копировал изображение PNG, изображение каким-то образом было повреждено, когда я попытался сделать то же самое с изображением JPG, проблема была решена.

Спасибо!.

0 голосов
/ 04 марта 2011

взгляните на символ upperCase в имени файла, иногда возникают ошибки, iPhone чувствителен к регистру, mac-simulator, вероятно, нет ...

0 голосов
/ 04 марта 2011

Я не совсем уверен, но я думаю, что ваша строка:

NSString *logoPath = [webPath stringByAppendingPathComponent:@"logo"];

должно быть:

NSString *logoPath = [webPath stringByAppendingPathComponent:@"logo.png"];

Я думаю, что iOs не распознает "логотип" как "logo.png".

...