Я знаю, что это много месяцев спустя, но я боролся с этим часами и нашел этот же вопрос по всему сайту и на iphonedevsdk.com, но так и не получил рабочего ответа.
Подводя итог, можно сказать, что если изображение было выбрано из рулона камеры / библиотеки фотографий, оно работало нормально, но если изображение было новым снимком, сделанным камерой, оно никогда не работало.Хорошо, вот как заставить это работать для обоих:
Вы должны отклонить и выпустить UIImagePickerController до того, как попытаетесь что-либо сделать с информационным словарем.Чтобы быть супер-четким:
Это НЕ работает:
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {
// No good with the edited image (if you allowed editing)
myUIImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
// AND no good with the original image
myUIImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
// AND no doing some other kind of assignment
UIImage *myImage = [info objectForKey:UIImagePickerControllerEditedImage];
[picker dismissModalViewControllerAnimated:YES];
[picker release];
}
Во всех этих случаях изображение будет ноль.
Однакочерез магию освобождения UIImagePickerController first ...
Это работает:
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissModalViewControllerAnimated:YES];
[picker release];
// Edited image works great (if you allowed editing)
myUIImageView.image = [info objectForKey:UIImagePickerControllerEditedImage];
// AND the original image works great
myUIImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];
// AND do whatever you want with it, (NSDictionary *)info is fine now
UIImage *myImage = [info objectForKey:UIImagePickerControllerEditedImage];
}
Сумасшедший простой, но это все, что естьэто к нему.