Version: 5.3 (switch to 5.4b)
ЯзыкEnglish
  • C#
  • JS

Язык программирования

Выберите подходящий для вас язык программирования. Все примеры кода будут представлены на выбранном языке.

Texture2D.EncodeToPNG

Предложить изменения

Успех!

Благодарим вас за то, что вы помогаете нам улучшить качество документации по Unity. Однако, мы не можем принять любой перевод. Мы проверяем каждый предложенный вами вариант перевода и принимаем его только если он соответствует оригиналу.

Закрыть

Ошибка внесения изменений

По определённым причинам предложенный вами перевод не может быть принят. Пожалуйста <a>попробуйте снова</a> через пару минут. И выражаем вам свою благодарность за то, что вы уделяете время, чтобы улучшить документацию по Unity.

Закрыть

Отменить

Руководство
public function EncodeToPNG(): byte[];
public byte[] EncodeToPNG();

Описание

Encodes this texture into PNG format.

The returned byte array is the PNG "file". You can write them to disk to get the PNG file, send them over the network, etc.

Эта функция работает только с ARGB32, RGB24 и Alpha8 форматами текстур. The texture also has to have Is Readable flag set in the import settings.

The encoded PNG data will contain alpha channel for ARGB32 textures, and no alpha channel for RGB24 textures. PNG data will not contain gamma correction or color profile information.

	// Saves screenshot as PNG file.
	import System.IO;

// Take a shot immediately function Start () { UploadPNG (); }

function UploadPNG () { // We should only read the screen buffer after rendering is complete yield WaitForEndOfFrame();

// Create a texture the size of the screen, RGB24 format var width = Screen.width; var height = Screen.height; var tex = new Texture2D (width, height, TextureFormat.RGB24, false); // Read screen contents into the texture tex.ReadPixels (Rect(0, 0, width, height), 0, 0); tex.Apply ();

// Encode texture into PNG var bytes = tex.EncodeToPNG(); Destroy (tex);

// For testing purposes, also write to a file in the project folder // File.WriteAllBytes(Application.dataPath + "/../SavedScreen.png", bytes);

// Create a Web Form var form = new WWWForm(); form.AddField("frameCount", Time.frameCount.ToString()); form.AddBinaryData("fileUpload",bytes);

// Upload to a cgi script var w = WWW("http://localhost/cgi-bin/env.cgi?post", form); yield w; if (w.error != null) { print(w.error); } else { print("Finished Uploading Screenshot"); } }
// Saves screenshot as PNG file.
using UnityEngine;
using System.Collections;
using System.IO;

public class PNGUploader : MonoBehaviour { // Take a shot immediately IEnumerator Start () { yield return UploadPNG(); }

IEnumerator UploadPNG() { // We should only read the screen buffer after rendering is complete yield return new WaitForEndOfFrame();

// Create a texture the size of the screen, RGB24 format int width = Screen.width; int height = Screen.height; Texture2D tex = new Texture2D(width, height, TextureFormat.RGB24, false);

// Read screen contents into the texture tex.ReadPixels(new Rect(0, 0, width, height), 0, 0); tex.Apply();

// Encode texture into PNG byte[] bytes = tex.EncodeToPNG(); Object.Destroy(tex);

// For testing purposes, also write to a file in the project folder // File.WriteAllBytes(Application.dataPath + "/../SavedScreen.png", bytes);

// Create a Web Form WWWForm form = new WWWForm(); form.AddField("frameCount", Time.frameCount.ToString()); form.AddBinaryData("fileUpload",bytes);

// Upload to a cgi script WWW w = new WWW("http://localhost/cgi-bin/env.cgi?post", form); yield return w;

if (w.error != null) { Debug.Log(w.error); } else { Debug.Log("Finished Uploading Screenshot"); } }

}