如何使用GPUImage创建一个letterboxed movieWriter输出?

时间:2013-06-27 08:13:45

标签: gpuimage

为可能明显的初学者问题道歉。我想要得到一个 960 x 400图像已经通过一系列过滤器输出到960 x 540信箱文件,保留其纵横比。我已成功显示到视图但目前正在垂直拉伸以填充960x540输出文件。任何建议如何实现这一点将不胜感激。我尝试在最终过滤器filterBlend

上使用forceProcessingAtSizeRespectingAspectRatio:(CGSize)frameSize;失败了
[filterBlurColor addTarget:filterBlend];

GPUImageView *filterView = (GPUImageView *)self.view;
[filterBlend addTarget:filterView];

filterView.fillMode = kGPUImageFillModePreserveAspectRatio;

//以后我有

movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(960.0, 540.0)];
[filterBlend addTarget:movieWriter];

[videoCamera startCameraCapture];

编辑尝试应用Brad的建议: 我现在已经使用

添加了一个转换过滤器作为链中的最后一步
filterTransform = [[GPUImageTransformFilter alloc] init];
    [(GPUImageTransformFilter *)filterTransform forceProcessingAtSizeRespectingAspectRatio:CGSizeMake(960.0, 540.0)];

并尝试了

filterTransform = [[GPUImageTransformFilter alloc] init];
    [(GPUImageTransformFilter *)filterTransform forceProcessingAtSize:CGSizeMake(960.0, 540.0)];

然而它仍然通过movieWriter输出垂直拉伸的文件,并且要查看正确的宽高比图像。当我减少图像尺寸时,forceProcessing似乎有效,但是当我增加它们时却没有。显然我错过了什么。

其他编辑。我想我刚刚掌握了forceProcessingAtSizeRespectingAspectRatio如何工作,如果传入的图像只在一个维度上较小,它就不会创建一个CGSizeMake声明大小的文件,然后只输出与传入相同尺寸的文件。我正在进行一次转换,在一步中输出一个CGSizeMake声明大小的文件,根据需要创建黑色信箱条,以填充未被宽高比尊重的图像区域覆盖的区域。

0 个答案:

没有答案