如何在 Android 图片库中保存从 unity 拍摄的照片?
How to save a captured photo from unity in Android Image Gallery?
我有一个有效的脚本,可以用 AR 相机拍照并将其保存在 Android 的数据文件中,如下所示:
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;
如何将 persistentDataPath 更改为 Android 图片库的正确路径。
谢谢。
我正在使用 Unity Native Gallery Plugin 做同样的事情。
这是我的代码
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;
}
}
你可以按照JackMini36在他的回答中所说的使用插件来完成。或者你可以写一段代码来做到这一点。
但具有挑战性的部分将是使其在 Android 设备上跨平台和权限问题。这是很好地描述的文章,您可以在其中学习在统一应用程序的图库中保存屏幕截图的不同方法。
http://unitydevelopers.blogspot.com/2018/09/save-screenshot-in-unity3d.html
我有一个有效的脚本,可以用 AR 相机拍照并将其保存在 Android 的数据文件中,如下所示:
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;
如何将 persistentDataPath 更改为 Android 图片库的正确路径。
谢谢。
我正在使用 Unity Native Gallery Plugin 做同样的事情。
这是我的代码
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;
}
}
你可以按照JackMini36在他的回答中所说的使用插件来完成。或者你可以写一段代码来做到这一点。
但具有挑战性的部分将是使其在 Android 设备上跨平台和权限问题。这是很好地描述的文章,您可以在其中学习在统一应用程序的图库中保存屏幕截图的不同方法。 http://unitydevelopers.blogspot.com/2018/09/save-screenshot-in-unity3d.html