Как мне сделать точную копию UIImage, возвращенную из UIImagePickerController?
У меня расходятся потребности в изображении, возвращаемом с камеры iPhone. Мое приложение масштабирует изображение для загрузки и отображения, и недавно я добавил возможность сохранять изображение в приложении «Фотографии».
Сначала я присваивал возвращаемое значение двум отдельным переменным, но оказалось, что они совместно используют один и тот же объект, поэтому я получил два уменьшенных изображения вместо одного в полном масштабе.
После выяснения, что вы не можете сделатьUIImage *copyImage = [myImage copy];
Я сделал копию используяimageWithCGImageсогласно ниже. К сожалению, это не работает, потому что копия (здесьcroppedImage) поворачивается на 90º от оригинала.
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
// Resize, crop, and correct orientation issues
self.originalImage = [info valueForKey:@"UIImagePickerControllerOriginalImage"];
UIImageWriteToSavedPhotosAlbum(originalImage, nil, nil, nil);
UIImage *smallImage = [UIImage imageWithCGImage:[originalImage CGImage]]; // UIImage doesn't conform to NSCopy
// This method is from a category on UIImage based on this discussion:
// http://discussions.apple.com/message.jspa?messageID=7276709
// It doesn't rotate smallImage, though: while imageWithCGImage returns
// a rotated CGImage, the UIImageOrientation remains at UIImageOrientationUp!
UIImage *fixedImage = [smallImage scaleAndRotateImageFromImagePickerWithLongestSide:480];
...
}
Есть ли способ скопировать изображение UIImagePickerControllerOriginalImage без изменения его в процессе?