我正在开发一个应用程序,我在设备方向为OFF时以横向模式捕获图像。我正在使用GPUImageStillCamera
来捕获图像。但是我在旋转图像方面遇到了问题。问题是,当我以横向模式捕获图像时设备旋转关闭并保存在图库中,然后打开设备旋转,图像必须随设备方向旋转。但是在以纵向模式保持设备时图像处于横向状态,而如果在横向保持设备,则图像旋转为UpsideDown
。
注意
在设备旋转打开时捕获图像旋转效果很好。 当设备旋转关闭时,问题仅出现在横向模式下的图像。 我尝试了很多像this one这样的解决方案。但是没有用 我。
任何帮助将不胜感激。感谢
答案 0 :(得分:0)
我解决了这个问题。即使设备方向为accelerometer's
,我也尝试检测OFF
旋转以获得旋转。将CoreMotion.framerwork
添加到您的项目中。然后在CMMotionManager.h
中导入viewController
。在viewDidLoad
中,添加以下代码:
self.motionManager = [[CMMotionManager alloc] init];
self.motionManager.accelerometerUpdateInterval = 1;
if ([self.motionManager isAccelerometerAvailable])
{
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[self.motionManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
dispatch_async(dispatch_get_main_queue(), ^{
float xx = -accelerometerData.acceleration.x;
float yy = accelerometerData.acceleration.y;
float angle = atan2(yy, xx);
// could fire a custom shouldAutorotateToInterfaceOrientation-event here.
if(angle >= -2.25 && angle <= -0.75)
{
if(_deviceOrientation != UIInterfaceOrientationPortrait)
{
_deviceOrientation = UIInterfaceOrientationPortrait;
}
}
else if(angle >= -0.75 && angle <= 0.75)
{
if(_deviceOrientation != UIInterfaceOrientationLandscapeRight)
{
_deviceOrientation = UIInterfaceOrientationLandscapeRight;
}
}
else if(angle >= 0.75 && angle <= 2.25)
{
if(_deviceOrientation != UIInterfaceOrientationPortraitUpsideDown)
{
_deviceOrientation = UIInterfaceOrientationPortraitUpsideDown;
}
}
else if(angle <= -2.25 || angle >= 2.25)
{
if(_deviceOrientation != UIInterfaceOrientationLandscapeLeft)
{
_deviceOrientation = UIInterfaceOrientationLandscapeLeft;
}
}
});
}];
} else
NSLog(@"not active");