使用GPUImage相机我像这样设置相机
- (void)setupSessionWithImageView:(GPUImageView *)captureView
{
GPUImageStillCamera *stillCamera = [[GPUImageStillCamera alloc] init];
GPUImageGammaFilter *colorFilter = [[GPUImageGammaFilter alloc] init];
[stillCamera addTarget:colorFilter];
[colorFilter addTarget:captureView];
self.colorFilter = colorFilter;
self.stillCamera = stillCamera;
self.captureView = captureView;
[stillCamera startCameraCapture];
}
为了在我的View Controller上调用viewWillTransitionToSize:
时模仿Apple的iPad相机,我更新静态相机上的outputImageOrientation
。这会旋转视频预览,以便在iPad的方向发生变化时保持正确的方向。
- (void)setOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if (interfaceOrientation == UIInterfaceOrientationUnknown) { // default to portrait if we don't know
interfaceOrientation = UIInterfaceOrientationPortrait;
}
self.stillCamera.outputImageOrientation = interfaceOrientation;
}
我的问题是,当我使用iOS 9使用此设置拍摄照片时,所有风景图像都会报告它们的大小,就好像它们是肖像图像一样(因此短边是宽度测量和高度测量),但是它们会报告它们的方向正确。 What's New in iOS 9 Guide并未表示对AVFoundation的任何更改,听起来可能会影响到这一点。离开outputImageOrientation
作为肖像解决了这个问题,但是通过旋转视图阻止我在iPad上模仿Apple的原生相机功能。
- (void)captureImage
{
GPUImageStillCamera *stillCamera = self.stillCamera;
[stillCamera capturePhotoAsImageProcessedUpToFilter:self.colorFilter withCompletionHandler:^(UIImage *processedImage, NSError *error) {
NSLog(@"image orientation %ld", (long)processedImage.imageOrientation);
NSLog(@"image size %f width x %f height", processedImage.size.width, processedImage.size.height);
}];
}
我的GPUImage实现和/或我如何处理相机中的方向更改是否有问题?整个示例项目可以在my git page找到。在iOS 8中,在图像报告大小之前,准确地反映了它的方向属性。