Я пишу функцию для загрузки обычного файла PNG с веб-сервера и сохранения его в альбом фотографий iPhone. Я не получаю никакой ошибки для моего кода, перечисленного ниже, но UIImagePNGRepresentation не выполняет преобразование вообще. Все изображения, которые я получил, были черными. Я должен включить «авто-расширение» в разделе «Фотографии» для правильного отображения этих изображений. Любая подсказка, что не так с моим кодом? Заранее спасибо.
UIImage *orgImg = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://server.com/test.png"]]];
NSData * convertedData = UIImagePNGRepresentation(orgImg);
UIImage * img = [UIImage imageWithData: convertedData];
// Save Image to Photo Album
UIImageWriteToSavedPhotosAlbum(img, self,
@selector(thisImage:hasBeenSavedInPhotoAlbumWithError:usingContextInfo:), nil);
Еще несколько деталей этих двух выходных изображений, orgImg и img:
Если я передаю orgImg в UIImageWriteToSavedPhotosAlbum напрямую, я получаю то же PNG-изображение, размещенное на сервере. Однако приложение «Фотографии» на моем iPhone отображает его как черное изображение, потому что «Фотографии» не улучшают формат PNG автоматически.
Что касается изображения, полученного после использования UIImagePNGRepresentation, данные изображения были изменены методом, некоторые метаданные, такие как ширина / высота, были удалены из исходного изображения. Однако приложение «Фотографии» на моем iPhone по-прежнему отображает черное изображение.
Оба изображения отображаются правильно, если я скопирую их в Safari или по электронной почте. У меня не возникло никаких проблем, если я использую JPEG на стороне сервера. Просто любопытно, почему не работает только формат PNG.