Como faço uma cópia exata de um UIImage retornado de um UIImagePickerController?
Tenho necessidades divergentes com a imagem retornada da câmera do iPhone. Meu aplicativo reduz a imagem para upload e exibição e, recentemente, adicionei a capacidade de salvar a imagem no aplicativo Fotos.
No começo, eu estava atribuindo o valor retornado a duas variáveis separadas, mas descobriu-se que elas estavam compartilhando o mesmo objeto; portanto, eu estava obtendo duas imagens reduzidas em vez de uma em escala completa.
Depois de descobrir que você não pode fazerUIImage *copyImage = [myImage copy];
, Fiz uma cópia usandoimageWithCGImage, por abaixo. Infelizmente, isso não funciona porque a cópia (aquicroppedImage) acaba girando 90º do original.
- (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];
...
}
Existe uma maneira de copiar a imagem UIImagePickerControllerOriginalImage sem modificá-la no processo?