Histórico do problema:
O requisito é apenas cortar a cena, não incluir a interface do usuário e salvar a captura de tela no formato Base64 na exibição na Web.
Esquema:
Especifique a captura de tela da câmera:
1 /// <summary> 2 /// 相机 相机 截 / 3 /// </summary> 4 /// <param name = "camera"> </param> 5 /// <param name = "rect"> </param> 6 /// <returns> </returns> 7 byte público [] CaptureScreen (câmera da câmera, Rect rect) 8 { 9 RenderTexture rt = nova RenderTexture (camera.pixelWidth, camera.pixelHeight, 0 ); 10 11 camera.targetTexture = rt; 12 camera.Render (); 14 RenderTexture.active = rt; 15 Texture2D screenShot = new Texture2D (camera.pixelWidth, camera.pixelHeight, TextureFormat.RGBA32, false ); 16 17 screenShot.ReadPixels (rect, 0 , 0 ); 18 screenShot.Apply (); 19 20 camera.targetTexture = nulo ; 21 RenderTexture.active = nulo ; 22 GameObject.Destroy (rt); 23 bytes 24 [] bytes =screenShot.EncodeToPNG (); 25 26 bytes de retorno ; 27 }
Não escrevi para a memória aqui, porque não preciso, carreguei diretamente.
A transferência para Base64 é muito simples:
1 /// <summary> 2 /// 图片 Base64 3 /// </summary> 4 /// <param name = "bytesArr"> </param> 5 /// <returns> </returns> 6 public String Texture2DToBase64 ( byte [] bytesArr) 7 { 8 string strbaser64 = Convert.ToBase64String (bytesArr); 9 10 strbaser64 de retorno ; 11 }
Base64:
Um dos métodos de codificação mais comuns usados para transmitir código de bytes de 8 bits na rede , a codificação Base64 é um processo de binário para caractere, que pode ser usado para transferir informações de identificação mais longas no ambiente HTTP . A codificação Base64 é ilegível e só pode ser lida após a decodificação. O Base64 é amplamente utilizado em vários campos de computadores devido às vantagens acima, (Enciclopédia)
Exemplo de captura de tela: