Unity保存图片、截图

//需要一个摄像机

void BuildTexture ( ) {

  Camera camera = Camera.main;

        //尺寸

        Rect rect = new Rect(0, 0, 1920, 1080);

        // 创建一个RenderTexture对象  、设置渲染图片的大小和深度

        RenderTexture rt = new RenderTexture((int)rect.width, (int)rect.height, 2);

        // 临时设置相关相机的targetTexture为rt, 并手动渲染相关相机  

        camera.targetTexture = rt;

        //渲染相机

        camera.Render();

 

        // 激活rt, 从中中读取像素。  

        RenderTexture.active = rt;

        Texture2D screenShot = new Texture2D((int)rect.width, (int)rect.height, TextureFormat.RGB24, false);

        // 从RenderTexture.active中读取像素  

        screenShot.ReadPixels(rect, 0, 0, false);

        //改变像素设置之后调用的方法()

        screenShot.Apply();

 

        //刷新

        // 重置相关参数,以使用camera继续在屏幕上显示  

        camera.targetTexture = null;

        //ps: camera2.targetTexture = null;  

        RenderTexture.active = null;  

        GameObject.DestroyImmediate(rt);

        // 最后将这些纹理数据,成一个png图片文件  

        byte[] bytes = screenShot.EncodeToPNG();

 

        string filename = Application.dataPath + "/filename.jpg";

        Debug.Log(string.Format("截屏了一张照片: {0}", filename));

        if (File.Exists(filename)) File.Delete(filename);

        System.IO.File.WriteAllBytes(filename, bytes);

}

 

//生成Texture2D (生成一个黑白相间的图片)

Texture2D texture = new Texture2D(512, 512);

        for (int y = 0; y < texture.height; y++)

        {

            for (int x = 0; x < texture.width; x++)

            {

                Color color = ((x + y) % 2 == 0 ? Color.white : Color.gray);

//设置位置点像素的颜色

                texture.SetPixel(x, y, color);

            }

        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值