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