Search code examples
c#androidunity-game-engineaugmented-realityvuforia

How to save a captured photo from unity in Android Image Gallery?


I have a valid script that takes a photo with the AR camera and saves it in data files of Android, like so :

    screenShotName = "Dorot" + System.DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".png";
    File.WriteAllBytes(Application.persistentDataPath + "/" + screenShotName, screenshot.EncodeToPNG());
    GameObject.Find("MainCanvas").GetComponent<Canvas>().enabled = true;

How can I change the persistentDataPath with the right path of Android Image Gallery.

Thanks.


Solution

  • I am using Unity Native Gallery Plugin to do the same exact thing.

    This is my code

    public class ScreenshotTaker : MonoBehaviour
    {
        public bool takingScreenshot = false;
    
        public void CaptureScreenshot()
        {
            StartCoroutine(TakeScreenshotAndSave());
        }
    
        private IEnumerator TakeScreenshotAndSave()
        {
            takingScreenshot = true;
            yield return new WaitForEndOfFrame();
    
            Texture2D ss = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
            ss.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
            ss.Apply();
    
            // Save the screenshot to Gallery/Photos
            string name = string.Format("{0}_Capture{1}_{2}.png", Application.productName, "{0}", System.DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss"));
            Debug.Log("Permission result: " + NativeGallery.SaveImageToGallery(ss, Application.productName + " Captures", name));
            takingScreenshot = false;
        }
    }