版本:Unity 6(6000.0)
语言英语
  • C#

ImageConversion.EncodeArrayToPNG

建议修改之处

成功!

感谢您帮助我们提高 Unity 文档的质量。尽管我们无法接受所有提交内容,我们都会认真阅读用户建议的每处修改,并在适用时进行更新。

关闭

提交失败

由于某种原因,无法提交您的建议修改。请在几分钟后<a>重试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static byte[] EncodeArrayToPNG(数组 array, Experimental.Rendering.GraphicsFormat format, uint width, uint height, uint rowBytes);

参数

array 要转换的字节数组。
format 图像数据像素格式。
width 图像数据宽度,单位为像素。
height 图像数据高度,单位为像素。
rowBytes 按字节计的单行长度。默认为 0,表示 Unity 自动计算长度。

描述

将此数组编码成 PNG 格式。

此方法返回一个字节数组,即 PNG 文件数据。您可以将编码后的数据存储为文件或无需进一步处理直接通过网络发送。

此方法不适用于任何已压缩格式。编码后的 PNG 数据将是 8 位灰度、RGB 或 RGBA(取决于传入的格式)。对于单通道红色纹理(R8R16RFloatRHalf),编码后的 PNG 数据将以灰度显示。PNG 数据不包含伽马校正或色彩配置文件信息。

此方法是线程安全的。

// Saves screenshot as PNG file.
using System.Collections;
using System.IO;
using UnityEngine;

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

IEnumerator SaveScreenPNG() { // Read the screen buffer after rendering is complete yield return new WaitForEndOfFrame();

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

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

// Encode the bytes in PNG format byte[] bytes = ImageConversion.EncodeArrayToPNG(tex.GetRawTextureData(), tex.graphicsFormat, (uint)width, (uint)height); Object.Destroy(tex);

// Write the returned byte array to a file in the project folder File.WriteAllBytes(Application.dataPath + "/../SavedScreen.png", bytes); } }