Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using System.IO;
- using UnityEngine;
- using System.Net;
- using System.Net.Sockets;
- using System.Threading;
- using System;
- public class ScreenSaver : MonoBehaviour {
- byte[] receiveArr;
- bool writeFile = false;
- int index = 0;
- int allCount = 0;
- List<byte[]> list = new List<byte[]>();
- public string nameFile;
- void WritePng()
- {
- writeFile = false;
- int indexArr = 0;
- for (int i = 0; i < list.Count; i++)
- {
- for (int j = 0; j < list[i].Length; j++)
- {
- indexArr++;
- }
- }
- receiveArr = new byte[indexArr];
- indexArr = 0;
- for (int i = 0; i < list.Count; i++)
- {
- for (int j = 0; j < list[i].Length; j++)
- {
- receiveArr[indexArr] = list[i][j];
- indexArr++;
- }
- }
- File.WriteAllBytes(nameFile+".png", receiveArr);
- }
- // Update is called once per frame
- void Update() {
- if (writeFile)
- {
- WritePng();
- }
- if (Input.GetKeyDown(KeyCode.Space))
- {
- WritePng();
- }
- if (Input.GetKeyDown(KeyCode.P))
- {
- StartCoroutine(UploadPNG());
- }
- }
- IEnumerator UploadPNG()
- {
- yield return new WaitForEndOfFrame();
- Texture2D texture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);
- texture.ReadPixels(new Rect(0, 0, Screen.width, Screen.height), 0, 0, false);
- texture.Apply();
- byte[] bytes = texture.EncodeToPNG();
- Destroy(texture);
- int lengthPacket = 255;
- int countOfMessage = bytes.Length / lengthPacket;
- int remainder = bytes.Length % lengthPacket;
- byte idMessage = 0;
- byte[] temp;
- int startIndex = 0;
- int receiveCount = countOfMessage + ((remainder > 0) ? 1 : 0);
- for (int i = 0; i < receiveCount; i++)
- {
- temp = new byte[lengthPacket + 9];
- temp[0] = idMessage;
- byte[] numberOfPacket = BitConverter.GetBytes(i);
- temp[1] = numberOfPacket[0];
- temp[2] = numberOfPacket[1];
- temp[3] = numberOfPacket[2];
- temp[4] = numberOfPacket[3];
- byte[] allPacket = BitConverter.GetBytes(receiveCount);
- temp[5] = allPacket[0];
- temp[6] = allPacket[1];
- temp[7] = allPacket[2];
- temp[8] = allPacket[3];
- if (i < countOfMessage)
- {
- Array.Copy(bytes, startIndex, temp, 9, lengthPacket);
- startIndex += lengthPacket;
- }
- if (i >= countOfMessage && remainder > 0)
- {
- temp = new byte[9 + remainder];
- Array.Copy(bytes, startIndex, temp, 9, remainder);
- }
- Debug.Log(i);
- }
- byte[] end = new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0 };
- Debug.Log(countOfMessage + " " + remainder);
- File.WriteAllBytes(Application.dataPath + "/../"+nameFile+".png", bytes);
- Debug.Log("File is saved");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment