TakePhoto.cs
IEnumerator Start()
{
//获取摄像头
yield return Application.RequestUserAuthorization(UserAuthorization.WebCam);
if(Application.HasUserAuthorization(UserAuthorization.WebCam))
{
WebCamDevice[] devices = WebCamTexture.devices;
if(devices !=null)
{
//获取设备名称
deviceName = devices[0].name;
tex = new WebCamTexture(deviceName,400,300,12);
tex.Play();//建议在需要拍摄照片的时候开启摄像头,不拍摄时将其关闭掉,这里可以使用tex.Pause()暂停摄像头,tex.Stop()关闭摄像头
}
}
}
//获取像素
private byte[] GetPhotoPixel(WebCamTexture ca)
{
Texture2D texture = new Texture2D (ca.width,ca.height);
int y = 0;
while (y < texture.height)
{
int x = 0;
while (x < texture.width)
{
UnityEngine.Color color = ca.GetPixel(x,y);
texture.SetPixel(x,y,color);
++x;
}
++y;
}
texture.Apply ();
// texture.name = name ;
byte[] pngData = GetJpgData (texture);
return pngData ;
}
//控制照片大小
private byte[] GetJpgData(Texture2D te)
{
byte[] data= null ;
int quelity = 75 ;
while(quelity > 20)
{
data = te.EncodeToJPG(quelity);
int size = data.Length/1024;
if( size > 30 )
{
quelity -=5;
}
else
{
break ;
}
}
return data ;
}