Skip to main content
ARShow
ARShow
 首页 » 资源教程 » Vuforia教程

Vuforia SDK---- AR开发vuforia实现拍照截屏功能

2016年09月03日 13:50:0219000

在好多AR项目中都会用到拍照功能,把AR展示的东西进行一下分享,下面就说一下在unity环境下,结合vuforia sdk和GalleryScreenshot插件实现拍照截图功能。

我们使用的插件是GalleryScreenshot

Vuforia SDK---- AR开发vuforia实现拍照截屏功能 Vuforia教程 第1张

这个插件可以支持win、安卓、ios等平台。不仅仅是可以进行保存而且还是可以保存到相册中,保存功能我们一般都可以通过Unity提供的api实现,但是不好实现的是保留的路径,安卓和ios不一样,这个插件就帮我们解决这个问题。

功能实现过程,先要导出vuforia sdk到项目中,在导入 GalleryScreenshot插件。

Vuforia SDK---- AR开发vuforia实现拍照截屏功能 Vuforia教程 第2张

和制作普通AR应用一样,只不过在加上拍照就可以

Vuforia SDK---- AR开发vuforia实现拍照截屏功能 Vuforia教程 第3张

GUI上面就是拍成功能实现代码

Vuforia SDK---- AR开发vuforia实现拍照截屏功能 Vuforia教程 第4张


[csharp] view plain copy
  1. using UnityEngine;  

  2. using System.Collections;  

  3. using System.IO;  

  4.   

  5. public class GalleryScreenshotExample : MonoBehaviour {  

  6.       

  7.     public Texture2D texture;  

  8.     bool saved = false;  

  9.     bool saved2 = false;  

  10.     public AudioSource audio;  

  11.     void Start ()  

  12.     {  

  13.         texture = null;  

  14.         ScreenshotManager.ScreenshotFinishedSaving += ScreenshotSaved;    

  15.         ScreenshotManager.ImageFinishedSaving += ImageSaved;  

  16.     }  

  17.       

  18.     void OnGUI ()  

  19.     {  

  20.         //GUILayout.Label("Example scene showing: \n1. how to save a screenshot\n" +  

  21.         //                "2. how to save an image from your assets");  

  22.           

  23.         if(GUILayout.Button ("Take Screenshot", GUILayout.Width (200), GUILayout.Height(80)))  

  24.         {     

  25.             StartCoroutine(ScreenshotManager.Save("MyScreenshot""MyApp"true));  

  26.             audio.Play();  

  27.         }  

  28.           

  29.         if(saved) GUILayout.Label ("Screenshot was successfully saved");  

  30.           

  31.         GUILayout.Space(40);  

  32.           

  33.         GUILayout.Label(texture);  

  34.           

  35.         //if(GUILayout.Button ("Save " + texture.name, GUILayout.Width (200), GUILayout.Height(80)))  

  36.         //{   

  37.         //    StartCoroutine("SaveAssetImage");  

  38.         //}  

  39.           

  40.         if(saved2) GUILayout.Label(texture.name + " was successfully saved");  

  41.     }  

  42.       

  43.     IEnumerator SaveAssetImage ()  

  44.     {  

  45.         byte[] bytes = texture.EncodeToPNG();  

  46.         string path = Application.persistentDataPath + "/MyImage.png";  

  47.         File.WriteAllBytes(path, bytes);  

  48.           

  49.         yield return new WaitForEndOfFrame();  

  50.           

  51.         StartCoroutine(ScreenshotManager.SaveExisting(path, true));  

  52.     }  

  53.       

  54.     void ScreenshotSaved()  

  55.     {  

  56.         Debug.Log ("screenshot finished saving");  

  57.         saved = true;  

  58.     }  

  59.       

  60.     void ImageSaved()  

  61.     {  

  62.         Debug.Log (texture.name + " finished saving");  

  63.         saved2 = true;  

  64.     }  

  65. }  


Vuforia SDK---- AR开发vuforia实现拍照截屏功能 Vuforia教程 第5张


注意一下权限的设置。在导出安卓,经过测试完全可以使用。

Vuforia SDK---- AR开发vuforia实现拍照截屏功能 Vuforia教程 第6张

在安卓系统下它会存在你手机相册里,你打开相册就能看到。

评论列表暂无评论
发表评论