Ios GPUImage-将GPUImageTransformFilter匹配到正确的混合大小

Ios GPUImage-将GPUImageTransformFilter匹配到正确的混合大小,ios,gpuimage,Ios,Gpuimage,我在iOS上使用GPUImage。我无法使用GPUImageTransformFilter转换(缩放)GPUImagePicture并将其混合到视频中 overlayImage = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"Sticker"] smoothlyScaleOutput:YES]; blendFilter = [GPUImageAlphaBlendFilter new]; transformFilte

我在iOS上使用GPUImage。我无法使用GPUImageTransformFilter转换(缩放)GPUImagePicture并将其混合到视频中

overlayImage = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"Sticker"] smoothlyScaleOutput:YES];

blendFilter = [GPUImageAlphaBlendFilter new];

transformFilter = [GPUImageTransformFilter new];
// [transformFilter forceProcessingAtSize:?????];
transformFilter.affineTransform = CGAffineTransformMakeScale(0.2f, 0.2f);

[overlayImage addTarget:transformFilter];

[videoCamera addTarget:blendFilter];
[overlayImage addTarget:blendFilter];

[overlayImage processImage];
[videoCamera startCameraCapture];
我得到的不正确的结果是,图像显示为未变换-它仍然是完整大小,好像从未应用变换过滤器

转换后的GPUImagePicture需要以与混合过滤器的其他内容完全相同的大小进行处理,这是否正确

如果是,我该怎么做?我应该使用forceProcessingAtSize吗?我可以通过查询一些东西,比如摄像机的会话来获得大小吗?我尝试将forceProcessingAtSize设置为AVCaptureSessionPreset的大小,640x480,但这没有帮助


谢谢

您没有将上述代码中的
transformFilter
连接到任何东西,因此它将被忽略。我相信您需要更正代码才能阅读

[overlayImage addTarget:transformFilter];

[videoCamera addTarget:blendFilter];
[transformFilter addTarget:blendFilter];
如果希望混合变换后的结果


forceProcessingAtSize
并不能真正满足您的需要,因为这会调整基本像素大小,而不是混合的显示方式。混合过滤器使用第一个图像的纵横比,然后拉伸第二个图像以适合该纵横比。这是我使用的非常简单的标准化纹理坐标的结果,不幸的是,我从未添加在第二张图像中保留纵横比的选项。

感谢您的回复-我喜欢GPUImage!我在将混合过滤器添加为变换过滤器的目标时遇到的问题是,整个输出都是白色的,我在其他地方看到过一些代码示例,这些示例在处理静态图像时从未执行过transformfilter.addTarget,因此我认为将目标添加到变换过滤器是错误的。