/// <summary>
/// 场景拍照返回对应图片
/// </summary>
/// <returns></returns>
public Texture2D CreateThumbnail()
{
int width = 1920;
int height = 1080;
RenderTexture rt = new RenderTexture(width, height, 0); //渲染一张1920*1080的图
Camera.main.targetTexture = rt; //传到主摄像机上
Camera.main.Render(); //渲染
RenderTexture.active = rt;
Texture2D screenShot = new Texture2D(width, height, TextureFormat.RGB24, false);
screenShot.ReadPixels(new Rect(0, 0, width, height), 0, 0); //读像素
screenShot = ScaleTexture(screenShot, screenShot.width / 4, screenShot.height / 4);
screenShot.Apply();
Camera.main.targetTexture = null;
RenderTexture.active = null;
Destroy(rt);
return screenShot;
}
/// <summary>
/// 控制图片的大小
/// </summary>
/// <param name="source"></param>
/// <param name="targetWidth"></param>
/// <param name="targetHeight"></param>
/// <returns></returns>
public static Texture2D ScaleTexture(Texture2D source, int targetWidth, int targetHeight)
{
Texture2D result = new Texture2D(targetWidth, targetHeight, source.format, true);
Color[] rpixels = result.GetPixels(0);
float incX = ((float) 1 / source.width) * ((float) source.width / targetWidth);
float incY = ((float) 1 / source.height) * ((float) source.height / targetHeight);
for (int px = 0; px < rpixels.Length; px++)
{
rpixels[px] = source.GetPixelBilinear(incX * ((float) px % targetWidth),
incY * ((float) Mathf.Floor(px / targetWidth)));
}
result.SetPixels(rpixels, 0);
result.Apply();
return result;
}
private IEnumerator ResIDUploadPic(Texture2D tex, string id,string url, Action<string,string> callBack)
{
WWWForm form = new WWWForm();
form.AddField("xx",id);
form.AddBinaryData("yy", tex.EncodeToPNG());
UnityWebRequest request = UnityWebRequest.Post(url, form);
request.SetRequestHeader("Authorization", token);
using (request)
{
yield return request.SendWebRequest();
if (request.result != UnityWebRequest.Result.Success)
{
Debug.LogError(request.error);
}
else
{
string result = request.downloadHandler.text;
Debug.LogError(result);
callBack?.Invoke(result,id);
}
}
}