2014-01-23 62 views
0

在stackoverflow成員回答「你不應該。這是一個隱私侵犯」之前,讓我反駁爲什麼有合理的需要。用AVCaptureStillImageOutput獲取預覽圖像

我有一個場景,用戶可以通過向左和向右滑動來更改相機設備。爲了使這個動畫看起來不像絕對的廢話,我需要在製作這個動畫之前獲取一個凍結幀。

的唯一明智的答案是我見過捕捉AVCaptureVideoDataOutput緩衝區,這是很好的,但現在我不能讓用戶採取與kCVPixelFormatType_420YpCbCr8BiPlanarFullRange視頻/照片是試圖從CGBitmapContextCreate得到一個CGImage的噩夢請參閱How to convert a kCVPixelFormatType_420YpCbCr8BiPlanarFullRange buffer to UIImage in iOS

拍攝靜態照片時,在使用AVCaptureVideoDataOutput而不是AVCaptureStillImageOutput時是否存在嚴重的質量問題?由於用戶將同時拍攝視頻和靜態照片(不僅僅是凍結預覽靜止圖像),還有一些人可以向我解釋這個差異,如kCVPixelFormatType_420YpCbCr8BiPlanarFullRange/kCVPixelFormatType_32BGRA除了一個不能工作舊的硬件?

回答

-1

我不認爲有一種方法可以使用AVFoundation直接捕獲預覽圖像。然而,你可能需要捕獲預覽層通過執行以下操作:

UIGraphicsBeginImageContext(previewView.frame.size); 
[previewLayer renderInContext:UIGraphicsGetCurrentContext()]; 
UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

哪裏previewView.layer是 previewLayer是AVCaptureVideoPreviewLayer加入previewView。 「圖像」是從這一層渲染的,可用於您的動畫。