我正在从UIImage
收到我的AVCaptureSession
并将其设置为UIImageView
。纵向模式以正确的方向设置图像,但是一旦我使用横向模式,图像被设置为顺时针旋转90度。
我做了一些研究,发现我可以使用UIImageOrientation
这个方法来解决我的问题:
[UIImage imageWithCGImage:cgimageref scale:1 orientation:orientation]
但我不明白怎么做。如果我在所有图片上查看UIImageOrientation
,则纵向和横向模式下的值始终为3(NSLog(@"%d",UIImageOrientation)
)。我很困惑这对我有什么帮助。我错过了什么吗?
这是方向代码:
-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
self.prevLayer.frame = self.view.bounds;
self.prevLayer.orientation = [[UIDevice currentDevice] orientation];
}
shouldAutorotateToInterfaceOrientation返回YES。
答案 0 :(得分:4)
解决方案需要一些时间才能找到。我不得不为AVCaptureConnection添加方向
AVCaptureConnection *videoConnection = nil;
for (AVCaptureConnection *connection in stillImageOutput.connections){
for (AVCaptureInputPort *port in [connection inputPorts]){
if ([[port mediaType] isEqual:AVMediaTypeVideo] ){
videoConnection = connection;
break;
}
}
if (videoConnection) { break; }
}
以下这一行是修复:
if([videoConnection isVideoOrientationSupported]) {
[videoConnection setVideoOrientation:[[UIDevice currentDevice] orientation]];
}
所有图像都适用于任何方向。