代码如下
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Android;
using UnityEngine.UI;
using System.IO;
public class CameraText : MonoBehaviour
{
public WebCamTexture webCamTexture;
public string savePath = "WebCamImage.png";
public RawImage rawImage;
///IEnumerator Start()
public void StartC()
{
Debug.Log("我是来拍照片的");
// 启动摄像头
WebCamDevice[] devices = WebCamTexture.devices;
WebCamTexture webCam = new WebCamTexture(devices[0].name);
webCam.wrapMode = TextureWrapMode.Repeat;
///renderer.material.mainTexture = webCam;
webCam.Play();
Debug.Log("webCam.Play");
rawImage.texture = webCam;
}
}
保存图片到本地
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.Android;
using UnityEngine.UI;
using System.IO;
public class CameraText : MonoBehaviour
{
public string savePath = "WebCamImage.png";
public RawImage rawImage;
WebCamTexture webCam;
Texture2D mtexture;
public byte[] data;
///IEnumerator Start() <summary>
/// IEnumerator Start()
//这个是自己写的
private Texture2D TextureToTexture2D(Texture texture)
{
Texture2D texture2D = new Texture2D(texture.width, texture.height, TextureFormat.RGBA32, false);
RenderTexture currentRT = RenderTexture.active;
RenderTexture renderTexture = RenderTexture.GetTemporary(texture.width, texture.height, 32);
Graphics.Blit(texture, renderTexture);
RenderTexture.active = renderTexture;
texture2D.ReadPixels(new Rect(0, 0, renderTexture.width, renderTexture.height), 0, 0);
texture2D.Apply();
RenderTexture.active = currentRT;
RenderTexture.ReleaseTemporary(renderTexture);
return texture2D;
}
public void StopC()
{
webCam.Stop();
Debug.Log("webCam.Stop");
mtexture = TextureToTexture2D(rawImage.texture);
mtexture.Apply();
data = mtexture.EncodeToPNG();
// 转换Texture2D为PNG并保存到文件
File.WriteAllBytes(savePath, data);
Debug.Log("Snapshot saved to: " + savePath);
}
/// </summary>
public void StartC()
{
Debug.Log("我是来拍照片的");
// 启动摄像头
WebCamDevice[] devices = WebCamTexture.devices;
//WebCamTexture webCam = new WebCamTexture(devices[0].name);
webCam = new WebCamTexture(devices[0].name);
webCam.wrapMode = TextureWrapMode.Repeat;
///renderer.material.mainTexture = webCam;
webCam.Play();
Debug.Log("webCam.Play");
rawImage.texture = webCam;
}
}
上传图片,这个需要一套新的协议。