Texture to texture2D以及texture2D像素反转

本文介绍了一种在Unity中将渲染纹理保存为PNG图片的方法。通过使用RenderTexture和Graphics.Blit进行图像数据的复制,并利用Texture2D将像素数据读取出来,最后将这些数据编码成PNG格式并保存到文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    private void SaveRenderTextureToPNG(Texture inputTex, string file)
    {
        RenderTexture temp = RenderTexture.GetTemporary(inputTex.width, inputTex.height, 0, RenderTextureFormat.ARGB32);
        Graphics.Blit(inputTex, temp);
        Texture2D tex2D = GetRTPixels(temp);
        RenderTexture.ReleaseTemporary(temp);
        File.WriteAllBytes(file, tex2D.EncodeToPNG());
    }

    private Texture2D GetRTPixels(RenderTexture rt)
    {
        RenderTexture currentActiveRT = RenderTexture.active;
        RenderTexture.active = rt;
        Texture2D tex = new Texture2D(rt.width, rt.height);
        tex.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0);
        RenderTexture.active = currentActiveRT;
        return tex;
    }

 

            Color[] colors = tex.GetPixels(capx, capy, capwidth, capheight);
            System.Array.Reverse(colors, 0, colors.Length);


            Texture2D t = new Texture2D(capwidth, capheight, TextureFormat.RGB24, true);
            //Debug.Log("Pixel size:" + capx + " " + capy + " " + capwidth + " " + capheight);
            //t.ReadPixels(new Rect(capx, capy, capwidth, capheight), 0, 0, false);

            //for (int i = 0; i < capwidth; i++)
            //{
            //    for(int j=0;j<capheight;j++)
            //    {
            //        Color temp = t.GetPixel(i, j);
            //        t.SetPixel(i,j,)
            //    }
            //}

            t.SetPixels(colors);
            t.Apply();

 

转载于:https://www.cnblogs.com/llstart-new0201/p/8359013.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值