【问题标题】:Take a screenshot without the UI elements in Unity [duplicate]在 Unity 中截取没有 UI 元素的屏幕截图 [重复]
【发布时间】:2021-06-09 11:50:19
【问题描述】:

我正在尝试在 AR 应用中捕捉相机在手机中看到的内容并拍照。我发现是截取设备的屏幕截图,然后将其保存为图像。但是,我想截取相机看到的而不是屏幕的屏幕截图。即没有在应用程序中创建任何 2D 或 3D 元素。纯粹是相机看到的。我该怎么做?

public void Start() {
        StartCoroutine ("SaveImage");
}

WaitForEndOfFrame frameEnd = new WaitForEndOfFrame ();

    IEnumerator SaveImage() {
        // Create a texture the size of the screen, RGB24 format
        int width = Screen.width;
        int height = Screen.height;
        yield return frameEnd;
        var tex = new Texture2D (width, height, TextureFormat.RGB24, false);

        // Read screen contents into the texture
        tex.ReadPixels (new Rect (0, 0, width, height), 0, 0);
        tex.Apply ();

        byte[] bytes = tex.EncodeToPNG ();
        Destroy (tex);
        var form = new WWWForm ();
        form.AddField ("plant", plantComponentID);
        form.AddBinaryData ("image", bytes, "screenShot.png", "image/png");

        yield return null;
    }

【问题讨论】:

  • 好吧,据我所知,目前你做的是 excat 对面......你只考虑 Unity 渲染的内容,而不是任何输入摄像头......
  • @derHugo 那么我应该在截屏时禁用场景中的任何活动 UI 元素吗?
  • 不...我的意思是没有实际硬件相机的视频流输入...您只存储在 Unity 中渲染的任何内容(2D/3D 内容).. 见为存储实际硬件相机图片提供完整解决方案的重复链接
  • @derHugo 啊,好的,谢谢,我会检查一下。

标签: c# unity3d


【解决方案1】:

有趣的问题。

我会尝试设置一个RenderTexture,并告诉场景中的摄像机对其进行渲染。然后我会尝试使用 ImageConversion 类将我的相机眼睛截图保存到文件中。

这正是我的尝试。不确定这是否是正确的方法,所以提供它以防万一。如果您尝试一下,我很高兴知道您尝试的结果:)

【讨论】:

  • 谢谢,我会试试看它是否有效:)
  • 这仍然不会存储实际硬件相机的任何图像数据 .. 仅存储 Unity 渲染的任何内容 - OP 声明 应该最终出现在图像中;)
  • 我知道这是unity相机的截图...谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 2015-11-13
  • 1970-01-01
  • 2013-06-05
  • 1970-01-01
  • 2022-12-12
  • 2013-06-24
相关资源
最近更新 更多