Texture2D.EncodeToPNG 编码为PNG

function EncodeToPNG () : byte[]


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.

返回的字节数组是PNG “文件”。你可以把数组写到磁盘上以便得到PNG文件,并通过网络发送它们

This function works only on ARGB32 and RGB24 texture formats. The texture also has to have Is Readable flag set in the import settings.


Is Readable (可读)

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 bufferafter rendering is complete
	yield WaitForEndOfFrame();

	// Create a texture the size of the screen, RGB24 format
	//创建一个屏幕大小的纹理,RGB24 位格
	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);
	//出于测试目的,也在project folder内写入一个文件

	// Create a Web Form

	var form = new WWWForm();
	form.AddField("frameCount", Time.frameCount.ToString());

	// Upload to a cgi script
	var w = WWW("http://localhost/cgi-bin/env.cgi?post", form);
	yield w;
	if (w.error != null) {
	} else {
		print("Finished Uploading Screenshot");

参见: ReadPixels, WaitForEndOfFrame, LoadImage.

Page last updated: 2010-12-18