从相机捕获的GPUImage报告意外的大小

时间:2015-09-04 01:24:08

标签: ipad uiinterfaceorientation gpuimage ios9 gpuimagestillcamera

使用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中,在图像报告大小之前,准确地反映了它的方向属性。

0 个答案:

没有答案