2015-10-16 94 views
1

我在IOS中使用AVFoundation,到目前爲止我已經制作了一個自定義相機,我可以點擊圖像和輸出(這是一個圖像)使用類AVCaptureStillImageOutput。AVCaptureStillImageOutput頁面查看

現在,每當我點擊圖像,我將它保存在一個數組中。現在我在pageView中顯示所有這些圖像。現在唯一的問題是我以縱向模式拍攝圖像,但它們在pageView上以橫向模式顯示。

由於我第一次在AVFoundation上工作,所以我不明白這背後的原因?

回答

0

好吧,我發現的UIImage的類別返回圖像

- (UIImage *)fixOrientation { 

// No-op if the orientation is already correct 
if (self.imageOrientation == UIImageOrientationUp) return self; 

// We need to calculate the proper transformation to make the image upright. 
// We do it in 2 steps: Rotate if Left/Right/Down, and then flip if Mirrored. 
CGAffineTransform transform = CGAffineTransformIdentity; 

switch (self.imageOrientation) { 
    case UIImageOrientationDown: 
    case UIImageOrientationDownMirrored: 
     transform = CGAffineTransformTranslate(transform, self.size.width, self.size.height); 
     transform = CGAffineTransformRotate(transform, M_PI); 
     break; 

    case UIImageOrientationLeft: 
    case UIImageOrientationLeftMirrored: 
     transform = CGAffineTransformTranslate(transform, self.size.width, 0); 
     transform = CGAffineTransformRotate(transform, M_PI_2); 
     break; 

    case UIImageOrientationRight: 
    case UIImageOrientationRightMirrored: 
     transform = CGAffineTransformTranslate(transform, 0, self.size.height); 
     transform = CGAffineTransformRotate(transform, -M_PI_2); 
     break; 
    case UIImageOrientationUp: 
    case UIImageOrientationUpMirrored: 
     break; 
} 

switch (self.imageOrientation) { 
    case UIImageOrientationUpMirrored: 
    case UIImageOrientationDownMirrored: 
     transform = CGAffineTransformTranslate(transform, self.size.width, 0); 
     transform = CGAffineTransformScale(transform, -1, 1); 
     break; 

    case UIImageOrientationLeftMirrored: 
    case UIImageOrientationRightMirrored: 
     transform = CGAffineTransformTranslate(transform, self.size.height, 0); 
     transform = CGAffineTransformScale(transform, -1, 1); 
     break; 
    case UIImageOrientationUp: 
    case UIImageOrientationDown: 
    case UIImageOrientationLeft: 
    case UIImageOrientationRight: 
     break; 
} 

// Now we draw the underlying CGImage into a new context, applying the transform 
// calculated above. 
CGContextRef ctx = CGBitmapContextCreate(NULL, self.size.width, self.size.height, 
             CGImageGetBitsPerComponent(self.CGImage), 0, 
             CGImageGetColorSpace(self.CGImage), 
             CGImageGetBitmapInfo(self.CGImage)); 
CGContextConcatCTM(ctx, transform); 
switch (self.imageOrientation) { 
    case UIImageOrientationLeft: 
    case UIImageOrientationLeftMirrored: 
    case UIImageOrientationRight: 
    case UIImageOrientationRightMirrored: 
     // Grr... 
     CGContextDrawImage(ctx, CGRectMake(0,0,self.size.height,self.size.width), self.CGImage); 
     break; 

    default: 
     CGContextDrawImage(ctx, CGRectMake(0,0,self.size.width,self.size.height), self.CGImage); 
     break; 
} 

// And now we just create a new UIImage from the drawing context 
CGImageRef cgimg = CGBitmapContextCreateImage(ctx); 
UIImage *img = [UIImage imageWithCGImage:cgimg]; 
CGContextRelease(ctx); 
CGImageRelease(cgimg); 
return img; 
} 

只是做一個類別和廣告這種方法在category.Then稱之爲「fixOrientation」 method.It返回的UIImage而這正是需要的圖像。