Unity之將Texture保存成png


http://blog.csdn.net/bingheliefeng/article/details/51177505

 

using UnityEngine;
using System.Collections;
using System.IO;

public class SaveToPng : MonoBehaviour {

public Shader outShader;
public Texture inputTex;

// Use this for initialization
void Start () {
SaveRenderTextureToPNG(inputTex,outShader,Application.dataPath+"/temp","ok.png");
}

public bool SaveRenderTextureToPNG(Texture inputTex,Shader outputShader, string contents, string pngName)
{
RenderTexture temp = RenderTexture.GetTemporary(inputTex.width, inputTex.height, 0, RenderTextureFormat.ARGB32);
Material mat = new Material(outputShader);
Graphics.Blit(inputTex, temp, mat);
bool ret = SaveRenderTextureToPNG(temp, contents,pngName);
RenderTexture.ReleaseTemporary(temp);
return ret;

}

//將RenderTexture保存成一張png圖片
public bool SaveRenderTextureToPNG(RenderTexture rt,string contents, string pngName)
{
RenderTexture prev = RenderTexture.active;
RenderTexture.active = rt;
Texture2D png = new Texture2D(rt.width, rt.height, TextureFormat.ARGB32, false);
png.ReadPixels(new Rect(0, 0, rt.width, rt.height), 0, 0);
byte[] bytes = png.EncodeToPNG();
if (!Directory.Exists(contents))
Directory.CreateDirectory(contents);
FileStream file = File.Open(contents + "/" + pngName + ".png", FileMode.Create);
BinaryWriter writer = new BinaryWriter(file);
writer.Write(bytes);
file.Close();
Texture2D.DestroyImmediate(png);
png = null;
RenderTexture.active = prev;
return true;

}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM