0

我是 Detected Images using ImagePickerControllerSourceTypeCamera 这是我的代码Detected image using ImagePickerControllerSourceTypeCamera

-(void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info
{
    if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:@"public.image"]) 
    {
        [picker dismissModalViewControllerAnimated:YES];

        imgPicker = nil;



        UIImage * userOriginal = [info valueForKey:UIImagePickerControllerEditedImage];
        UIGraphicsBeginImageContext( CGSizeMake(640,640) );
        [userOriginal drawAtPoint:CGPointMake(0,0)];
        self.actualImage1= UIGraphicsGetImageFromCurrentImageContext();//self.actualImages1 is my original image
        UIGraphicsEndImageContext();
    }

请指导我如何克服这个问题

感谢提前

4

2 回答 2

1
-(UIImage *)scaleAndRotateImage:(UIImage *)image  
{  
   int kMaxResolution = 1280; //PUT YOUR DESIRED RESOLUTION HERE

   CGImageRef imgRef = image.CGImage;  
   CGFloat width = CGImageGetWidth(imgRef);  
   CGFloat height = CGImageGetHeight(imgRef);  
   CGAffineTransform transform = CGAffineTransformIdentity;  
   CGRect bounds = CGRectMake(0, 0, width, height);  
   if (width > kMaxResolution || height > kMaxResolution) {  
      CGFloat ratio = width/height;  
      if (ratio > 1) {  
         bounds.size.width = kMaxResolution;  
         bounds.size.height = bounds.size.width / ratio;  
      }  
      else {  
         bounds.size.height = kMaxResolution;  
         bounds.size.width = bounds.size.height * ratio;  
      }  
   }  

   CGFloat scaleRatio = bounds.size.width / width;  
   CGSize imageSize = CGSizeMake(CGImageGetWidth(imgRef), CGImageGetHeight(imgRef));  
   CGFloat boundHeight;  
   UIImageOrientation orient = image.imageOrientation; 
   switch(orient) {  

      case UIImageOrientationUp: //EXIF = 1  
        transform = CGAffineTransformIdentity;  
        break;  

      case UIImageOrientationUpMirrored: //EXIF = 2  
        transform = CGAffineTransformMakeTranslation(imageSize.width, 0.0);  
        transform = CGAffineTransformScale(transform, -1.0, 1.0);  
        break;  

      case UIImageOrientationDown: //EXIF = 3
        transform = CGAffineTransformMakeTranslation(imageSize.width, imageSize.height);  
        transform = CGAffineTransformRotate(transform, M_PI);  
        break;  

      case UIImageOrientationDownMirrored: //EXIF = 4  
        transform = CGAffineTransformMakeTranslation(0.0, imageSize.height);  
        transform = CGAffineTransformScale(transform, 1.0, -1.0);  
        break;  

      case UIImageOrientationLeftMirrored: //EXIF = 5  
        boundHeight = bounds.size.height;  
        bounds.size.height = bounds.size.width;  
        bounds.size.width = boundHeight;  
        transform = CGAffineTransformMakeTranslation(imageSize.height, imageSize.width);  
        transform = CGAffineTransformScale(transform, -1.0, 1.0);  
        transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);  
        break;  

     case UIImageOrientationLeft: //EXIF = 6  
        boundHeight = bounds.size.height;  
        bounds.size.height = bounds.size.width;  
        bounds.size.width = boundHeight;  
        transform = CGAffineTransformMakeTranslation(0.0, imageSize.width);  
        transform = CGAffineTransformRotate(transform, 3.0 * M_PI / 2.0);  
        break;  

     case UIImageOrientationRightMirrored: //EXIF = 7  
        boundHeight = bounds.size.height;  
        bounds.size.height = bounds.size.width;  
        bounds.size.width = boundHeight;  
        transform = CGAffineTransformMakeScale(-1.0, 1.0);  
        transform = CGAffineTransformRotate(transform, M_PI / 2.0);  
        break;  

     case UIImageOrientationRight: //EXIF = 8  
        boundHeight = bounds.size.height;  
        bounds.size.height = bounds.size.width;  
        bounds.size.width = boundHeight;  
        transform = CGAffineTransformMakeTranslation(imageSize.height, 0.0);  
        transform = CGAffineTransformRotate(transform, M_PI / 2.0);  
        break;  

     default:  
        [NSException raise:NSInternalInconsistencyException format:@"Invalid image orientation"];  

   }  

 UIGraphicsBeginImageContext(bounds.size);  

 CGContextRef context = UIGraphicsGetCurrentContext();  

 if (orient == UIImageOrientationRight || orient == UIImageOrientationLeft) {  
     CGContextScaleCTM(context, -scaleRatio, scaleRatio);  
     CGContextTranslateCTM(context, -height, 0);  
 }  
 else {  
     CGContextScaleCTM(context, scaleRatio, -scaleRatio);  
     CGContextTranslateCTM(context, 0, -height);  
 }  

 CGContextConcatCTM(context, transform);  

 CGContextDrawImage(UIGraphicsGetCurrentContext(), CGRectMake(0, 0, width, height), imgRef);  
 UIImage *imageCopy = UIGraphicsGetImageFromCurrentImageContext();  
 UIGraphicsEndImageContext();  
 return imageCopy;  

}

于 2012-04-21T08:02:08.523 回答
0

iPhone 3S 有一个 3 MegaPixels 的摄像头,而 4S 有 8 个。所以后者会给你一个更大的图像分辨率。您可以缩放图像。

于 2012-04-21T07:23:46.467 回答