wda*_*xna 2 aspect-ratio gpuimage
我发现Instagram有一个300*300的相机窗口?它是一个正方形,然后我试图用GPUImage制作相同的相机尺寸.所以我这样写:
primaryView = [GPUImageView alloc] initWithFrame:
CGRectMake(0,0,300,300)];//define a square view
//define a still camera
stillCamera = [[GPUImageStillCamera alloc]
initWithSessionPreset:AVCaptureSessionPreset640x480
cameraPosition:AVCaptureDevicePositionFront];
//make it portrait
stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
//define a filter
filter = [[GPUImageFilter alloc] init];
//force the output to 300*300
[filter forceProcessingAtSize:((GPUImageView*)self.primaryView).sizeInPixels];
//set things up
[stillCamera addTarget: filter];
[filter addTarget: primaryView];
[stillCamera startCameraCapture];
Run Code Online (Sandbox Code Playgroud)
现在我真的得到一个方形视图..但是视图看起来很平坦,它完全失真,我认为它可能是宽高比有问题.然后我设置主视图的填充模式,如下所示:
[primaryView setFillMode:kGPUImageFillModePreserveAspectRatioAndFill];
Run Code Online (Sandbox Code Playgroud)
这个:
[primaryView setFillMode:kGPUImageFillModePreserveAspectRatio];
Run Code Online (Sandbox Code Playgroud)
这个:
[primaryView kGPUImageFillModeStretch];
Run Code Online (Sandbox Code Playgroud)
最后!没有这些工作..所以我缺少什么,任何一个,帮助.
-forceProcessingAtSize:导致该过滤器输出与您提供的尺寸完全相同的图像,忽略纵横比.这将你的图像调整为300x300平方.
如果要保留图像的宽高比,则需要使用-forceProcessingAtSizeRespectingAspectRatio:.
但是,这将是您的图像的信箱.要复制Instagram所做的事情,您可能希望改为从图像中心切出一个方形区域.为此,请使用方形宽高比的裁剪滤镜.
| 归档时间: |
|
| 查看次数: |
4115 次 |
| 最近记录: |