¿Cómo hago una copia exacta de un UIImage devuelto por un UIImagePickerController?

Tengo necesidades divergentes para la imagen devuelta desde la cámara del iPhone. Mi aplicación reduce la imagen para cargarla y mostrarla y, recientemente, agregué la posibilidad de guardar la imagen en la aplicación Fotos.

Al principio estaba asignando el valor devuelto a dos variables separadas, pero resultó que estaban compartiendo el mismo objeto, por lo que estaba obteniendo dos imágenes reducidas en lugar de tener una a escala completa.

Después de descubrir que no puedes hacerUIImage *copyImage = [myImage copy];Hice una copia usandoimageWithCGImage, por debajo. Desafortunadamente, esto no funciona porque la copia (aquíimagen recortada) termina girando 90º del 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];
    ...
}

¿Hay alguna forma de copiar la imagen UIImagePickerControllerOriginalImage sin modificarla en el proceso?

Respuestas a la pregunta(5)

Su respuesta a la pregunta