- Home /
Need help to save the Picture in Android phone
I have made a mobile application which needs to capture the picture and save it in android/iOS phone gallery. So far I can open the camera, can take a picture and save it in C drive of my system but I don't know how to save the picture in phone. can someone help?? So far I have done this.
using UnityEngine; using System.Collections; using System.IO; using System;
public class takeShot_trial : MonoBehaviour {
public string deviceName;
private WebCamTexture wct;
public string path = "";
IEnumerator Start(){
WebCamDevice[] devices = WebCamTexture.devices;
deviceName = devices [0].name;
wct = new WebCamTexture (deviceName, 400, 300, 12);
Renderer rend = GetComponent <Renderer> ();
//For camera Authentication
rend.material.mainTexture = wct;
yield return Application.RequestUserAuthorization (UserAuthorization.WebCam);
if (Application.HasUserAuthorization (UserAuthorization.WebCam)) {
wct.Play ();
} else {
Debug.Log ("No Camera Found");
}
//For Photo Variables
}
void OnGUI() {
if (GUI.Button (new Rect (10, 70, 500, 100), "Click"))
TakeSnapshot ();
}
string fileName (int width, int height)
{
return string.Format ("screen_{0}x{1}x_{2}.png", width, height, System.DateTime.Now.ToString ("yyyy-MM-dd_HH-mm-ss"));
}
void TakeSnapshot()
{
Texture2D snap = new Texture2D(wct.width, wct.height);
snap.SetPixels(wct.GetPixels());
snap.Apply();
byte[] bytes = snap.EncodeToPNG ();
string filename = fileName (Convert.ToInt32 (snap.width), Convert.ToInt32 (snap.height));
Application.CaptureScreenshot ("Snapshot.png");
path=Application.dataPath + "/Snapshot" + filename;
System.IO.File.WriteAllBytes(path,bytes);
}
}
Answer by Bioinformatizer · Oct 25, 2016 at 02:37 PM
If the camera is being found just fine it might be where your program thinks the file is going. The Application.CaptureScreenshot should be fed your filename before it changes. Also, try using persistant data path to make sure that cross platform does not get mixed up.
string extraData = Time.time; // other file attachments
string exportName = Application.persistentDataPath + "\\" + extraData;
Application.CaptureScreenshot(exportName); // filepath needs to go here
On your device it should now be in the folder where your application data is stored and can be recalled by your application when using IO for pictures in persistent data path. Check out https://docs.unity3d.com/ScriptReference/Application-persistentDataPath.html and of course https://docs.unity3d.com/ScriptReference/Application.CaptureScreenshot.html
The code for Application.CaptureScreenshot("Screenshot.png"); still gets changed to where your persistent data path is even if you don't set it manually on mobile.
Your answer
Follow this Question
Related Questions
Accesing functions from Editor 0 Answers
SetActive (true); Used the wrong way? 1 Answer
error issues : KeyNotFoundException 1 Answer