2013-07-22 85 views
2

我發現Instagram的具有像300 * 300的方形攝像頭窗口,然後我試着用GPUImage使同一相機size.so我寫的是這樣的:如何在使用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]; 

現在我真的得到view..but視圖方看起來是那麼平坦的,它完全扭曲,我想我ratio.then設置主視圖像這樣的填充模式可能是有點問題的方面:

[primaryView setFillMode:kGPUImageFillModePreserveAspectRatioAndFill]; 

那麼這:

[primaryView setFillMode:kGPUImageFillModePreserveAspectRatio]; 

那麼這個:

[primaryView kGPUImageFillModeStretch]; 

終於來了!這些工作都沒有..所以我失去了,任何一個,幫助。

回答

9

-forceProcessingAtSize:使該過濾器,以輸出正是你提供尺寸的圖像,忽略縱橫比。這會將你的圖像壓縮成300x300的正方形。

如果您想保留圖像的長寬比,你想使用-forceProcessingAtSizeRespectingAspectRatio:

然而,將你的銀幕形象。要複製Instagram的做什麼,你可能要改爲切正方形區域進行圖像的中心。爲此,請使用正方形比例的裁剪過濾器。

+0

這並回答我的問題!謝謝布拉德!我讀了很多關於你寫的GPUImage。 – wdanxna

相關問題