How do I use File.WriteAllBytes to save a Texture2D as a JPG?
Hello. I'm trying to use the device's camera to take a photo and then save that photo to the device as a jpeg. I have a RawImage on the UI that I use to display what the camera sees using WebCamTexture.
My intention is to set the RawImage texture to a Texture2D. Then I want to save that image after using EncodeToJPG().
I'm lost on just how the byte array works. I've used other examples I've found to come up with the follow script. But I get an error that states "NullReferenceException: Object reference not set to an instance of an object System.IO.File.WriteAllBytes (System.String path, System.Byte[] bytes)"
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.IO;
using TMPro;
public class Photo : MonoBehaviour
{
public RawImage viewFinder;
WebCamTexture wcTexture;
public GameObject photoPanel;
public Text snapButtonTxt;
Texture2D snapCapture;
public TextMeshProUGUI photoNotes;
public static string savePath;
// Start is called before the first frame update
void Start()
{
wcTexture = new WebCamTexture();
viewFinder.texture = wcTexture;
viewFinder.material.mainTexture = wcTexture;
savePath = Application.persistentDataPath + "/";
}
public void SwitchToPhoto()
{
//Enable photo Mode GUI
photoPanel.SetActive(true);
//Activate Camera 'View Finder"
StartViewFinder();
}
public void StartViewFinder()
{
wcTexture.Play();
}
public void SnapPic() //stops WebCam playback and freezes image in place
{
if (wcTexture.isPlaying)
{
snapCapture = viewFinder.texture as Texture2D;
wcTexture.Stop();
}
else if (!wcTexture.isPlaying)
{
wcTexture.Play();
}
}
public void SavePhoto()
{
Debug.Log(Application.persistentDataPath);
byte[] bytes = snapCapture.EncodeToJPG();
File.WriteAllBytes(savePath + "myimage.jpg", bytes);
File.WriteAllText(savePath + "mynotes.txt", photoNotes.text);
}
}
If anyone can point out what I'm doing wrong and point out how to correct it, I'd appreciate it.
Your answer
Follow this Question
Related Questions
how to properly set a texture? 0 Answers
Save external files into game 0 Answers
Loading of Texture 2D works on editor but not on iOs 1 Answer
iOS gives error "No texture data available to upload" 0 Answers