2011-09-26 89 views

回答

2

UIImagePickerController有一个cameraViewTransform,用户可以在用户放大时缩放摄像机视图。图像被拍摄后,您可以根据变焦设置进行剪裁和调整大小。

为此,您将创建一个具有所需大小的新图形上下文,并将从图像选择器获取的图像绘制到该上下文中。

1

一旦你捕获了图像,我认为你可以使用缩放和裁剪图像到你想要的大小。

但图像的清晰度可能与原始图像不一样。

- (UIImage *)image 
{ 
    if (cachedImage == nil) { 

     // HERE YOU CAN GIVE THE FRAME YOU WANT THE SIZE OF THE IMAGE TO BE. 
     CGRect imageFrame = CGRectMake(0, 0, 400, 300); 
     UIView *imageView = [[UIView alloc] initWithFrame:imageFrame]; 
     [imageView setOpaque:YES]; 
     [imageView setUserInteractionEnabled:NO]; 

     [self renderInView:imageView withTheme:nil];   

     UIGraphicsBeginImageContext(imageView.bounds.size); 
      CGContextRef c = UIGraphicsGetCurrentContext(); 
      CGContextGetCTM(c); 
      CGContextScaleCTM(c, 1, -1); 
      CGContextTranslateCTM(c, 0, -imageView.bounds.size.height); 
      [imageView.layer renderInContext:c]; 
      cachedImage = [UIGraphicsGetImageFromCurrentImageContext() retain]; 

      // rescale image 
      UIImage* bigImage = UIGraphicsGetImageFromCurrentImageContext(); 
      CGImageRef scaledImage = [self newCGImageFromImage:[bigImage CGImage] scaledToSize:CGSizeMake(100.0f, 75.0f)]; 
      cachedImage = [[UIImage imageWithCGImage:scaledImage] retain]; 
      CGImageRelease(scaledImage); 
     UIGraphicsEndImageContext(); 

     [imageView release]; 
    } 

    return cachedImage; 
} 

希望这可以帮助你。