2010-10-06 60 views
0

我的代码如下。有谁知道发生了什么?旋转UIImage的问题

对不完整的信息。图像就消失了!

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 

    UIImage *imCaptured = [info valueForKey:@"UIImagePickerControllerOriginalImage"]; 
    CGImageRef cgirCropped = CGImageCreateWithImageInRect(imCaptured.CGImage, CGRectMake(700.0f, 430.0f, 650.0f, 650.0f)); 
    UIImage *imCropped = [UIImage imageWithCGImage:cgirCropped]; 

    UIGraphicsBeginImageContext(imCropped.size); 
    CGContextRef cgcrRotation = UIGraphicsGetCurrentContext(); 

    switch (imCaptured.imageOrientation) { 
     case UIImageOrientationUp: 
      CGContextRotateCTM(cgcrRotation, (180 * M_PI/180)); 
      break; 
     case UIImageOrientationDown: 

      break; 
     case UIImageOrientationLeft: 

      break; 
     case UIImageOrientationRight: 
      CGContextRotateCTM(cgcrRotation, (90 * M_PI/180)); 
      break; 
    } 
    [imCropped drawAtPoint:CGPointMake(0.0f, 0.0f)]; 
    [imvPreview setImage:UIGraphicsGetImageFromCurrentImageContext()]; 
} 
+0

它帮助,如果你添加了什么错误(错误?旋转错误?什么都不做?) – cobbal 2010-10-06 20:34:13

回答

3

我没有测试的代码,但我认为它围绕原点旋转,所以你需要翻译为好,这样的:

... 
case UIImageOrientationUp: 
     CGContextRotateCTM(cgcrRotation, (180 * M_PI/180)); 
     CGContextTranslateCTM(ctxt, -imCropped.size.width, -imCropped.size.height); 
     break; 
...