当前位置: 首页 > 知识库问答 >
问题:

GPUImageStillCamera在横向模式下捕获的图像方向问题

夏侯旻
2023-03-14

我正在开发一个应用程序,当设备方向关闭时,我在横向模式下拍摄图像。我正在使用GPUImageStillCamera拍摄图像。但我在图像的旋转中遇到了问题。问题是,当我在关闭设备旋转的情况下以横向模式拍摄图像并保存在gallery中,然后打开设备旋转,图像必须随设备方向旋转。但是,当以纵向模式握住设备时,图像处于横向,如果将设备置于横向,图像旋转是向上向下的。

笔记

当设备旋转打开时,图像旋转效果非常好。问题仅限于设备旋转关闭时图像处于横向模式。我尝试过很多这样的解决方案。但对我不起作用。

任何帮助都将不胜感激谢谢

共有1个答案

于鹏
2023-03-14

我找到了这个问题的解决方案。我试图检测加速计的旋转,以获得旋转,即使在设备方向关闭时也是如此。添加CoreMotion。框架工作(framerwork)。然后导入CMMotionManager。h在视图控制器中。在查看加载中,添加以下代码:

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");
 类似资料:
  • 问题内容: 我试图对我的应用程序强制使用“横向”模式,因为我的应用程序绝对不是针对“人像”模式设计的。我怎样才能做到这一点? 问题答案: 现在可以使用HTML5 Webapp清单。 见下文。 原始答案: 您不能将网站或Web应用程序锁定在特定方向。它违反了设备的自然行为。 您可以使用CSS3媒体查询来 检测 设备方向,如下所示: 或通过绑定JavaScript方向更改事件,如下所示: 2014年1

  • 这里有很多类似的话题和问题,我将遵循这些。但我有一个错误。 我的代码 在遵循教程之后,我将代码更改为 在矩阵中设置旋转。无法解决setRotate 我在 应用程序崩溃。 LogCat错误 这是236号线

  • 问题内容: 在我的相机应用中,您可以在前后相机之间切换。当我使用后置摄像头拍照时,照片与预览显示的一样。但是当我切换到前置摄像头时,图片是镜像的。我认为这与前置摄像头和后置摄像头处于横向模式有关。我已经尝试了几乎所有给定的答案。 如果有人可以向我指出正确的方向,那将真的有帮助。 问题答案: 我找到了答案,这样做没有帮助。我必须镜像生成的位图才能获得所需的结果。我使用Matrix方法来实现这一目标。

  • 我完成了我的iOS应用程序,但我只需要将一个视图设置为横向模式,其余的视图只能在竖屏中看到。 我使用的是Xcode 5.1,我通过从右侧面板中插入情节提要视图控制器创建了所有视图,因此如果您要告诉我在什么地方编写代码,请确切告诉我需要在哪里编写。 我在这里读到了一个解决方案UINavigationController强制旋转,但我不知道该在哪里编写代码。是否需要手动创建一个UIViewContro

  • 所以我用下面的方法设置了摄像头- 如您所见,我在摄像机参数上使用了setRoation()来实际指定图像方向,并在摄像机本身上使用了setDisplayOriation()来处理表面预览中的方向更改。(注释和未注释的代码似乎都没有保留方向。当我检查数据时,它返回0) 之后,在回调中,我甚至尝试使用矩阵保存具有方向的图像。 实际问题 > 当我在肖像模式下拍照时,一切正常。它看起来像是被拿走了。 但是

  • 我最近建立了以下网站。该网站在所有图像上使用img srcset。 在调试过程中,我发现当在主页上的纵向和横向模式之间切换时,顶部全宽图像并没有像它应该的那样填充视口。如果以横向模式刷新页面,您将看到正确的缩放比例。 我使用以下CSS使我的图像具有响应性: 重要的是要注意,我有两张图片。视口为600px或以下时显示正方形图像。任何超过600px和全宽图像显示。这是控制在css与和。 我无法通过Br