TIL (Today I Learned)/Unity

[Unity]iOS14 앨범에 사진 저장

loki d 2021. 8. 29. 23:19
728x90

[Unity]iOS14 앨범에 사진 저장

Unity ar Camera를 이용해서 화면 스크린샷 png를 앨범 내에 저장해주는 방법이다.

진행된 Version

  • Unity Version : 2019.4.26f1
  • Xcode : 14.5
  • iOS : 14.7

CameraCapture script

using System.IO;
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class CameraCapture : MonoBehaviour
{
    [SerializeField]
    private Button TakePhotoButton;
    [SerializeField]
    private GameObject Canvas;
    public int fileCounter;
    public KeyCode screenshotKey;

    private Camera Camera
    {
        get
        {
            if (!_camera)
            {
                // _camera = Camera.main;
                _camera = Camera.main;
            }
            return _camera;
        }
    }

    [SerializeField]
    private Camera _camera;
    void Awake()
    {
        TakePhotoButton.onClick.AddListener(TakePhoto);
    }

    private void TakePhoto()
    {
        Debug.Log("TakePhoto()" + fileCounter);
        // Capture();
        Canvas.SetActive(false);
        Screenshot();
    }

    private void Screenshot()
    {
        Texture2D texture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
        texture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0);
        texture.Apply();

        byte[] bytes = texture.EncodeToPNG();
        string name = "AR Camera" + System.DateTime.Now.ToString("yyyy-mm-dd_HH-mm-ss") +fileCounter + ".png";
        NativeGallery.SaveImageToGallery(bytes, "AR Camera", name);
        fileCounter++;
        Destroy(texture);
        Canvas.SetActive(true);
        Debug.Log("Canvas True");
    }
}

결과화면


IMG_25D1A8429F80-1