为可能明显的初学者问题道歉。我想要得到一个 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声明大小的文件,根据需要创建黑色信箱条,以填充未被宽高比尊重的图像区域覆盖的区域。