unity 生成缩略图

1.根据内存的图片生成缩略图

        public void CreateThumbnail(byte[] bytes, string path)
        {
            int w = 125, h = 125;

            Texture2D mThumbnail = new Texture2D(1, 1);

            mThumbnail.LoadImage(bytes);
            //mThumbnail.Scale(w, h);
            Texture2D thumb = ScaleTexture(mThumbnail, w, h);
            Object.DestroyImmediate(mThumbnail);


            byte[] bytesThumbnail = thumb.EncodeToPNG();

            System.IO.FileStream outputThumbnail = new System.IO.FileStream(path, FileMode.Create);
            outputThumbnail.Write(bytesThumbnail, 0, bytesThumbnail.Length);
            outputThumbnail.Flush();
            outputThumbnail.Close();

            Object.DestroyImmediate(thumb);
        }

        public void SaveToThumbnailFile(string path, byte[] bytes)
        {
            int w = 125;
            int h = 125;

            Texture2D mThumbnail = new Texture2D(1, 1);
            mThumbnail.LoadImage(bytes);
            //mThumbnail.Scale(w, h);

            Texture2D thumb = ScaleTexture(mThumbnail, w, h);
            Object.DestroyImmediate(mThumbnail);


            byte[] bytesThumbnail = thumb.EncodeToJPG();

            System.IO.FileStream outputThumbnail = new System.IO.FileStream(path, FileMode.Create);
            outputThumbnail.Write(bytesThumbnail, 0, bytesThumbnail.Length);
            outputThumbnail.Flush();
            outputThumbnail.Close();

            Object.DestroyImmediate(thumb);
        }
        public Texture2D ScaleTexture(Texture2D source, int targetWidth, int targetHeight)
        {
            Texture2D result = new Texture2D(targetWidth, targetHeight, source.format, false);

            float incX = (1.0f / (float)targetWidth);
            float incY = (1.0f / (float)targetHeight);

            for (int i = 0; i < result.height; ++i)
            {
                for (int j = 0; j < result.width; ++j)
                {
                    Color newColor = source.GetPixelBilinear((float)j / (float)result.width, (float)i / (float)result.height);
                    result.SetPixel(j, i, newColor);
                }
            }

            result.Apply();
            return result;
        }

2.图片转成RGB格式

        public Texture2D ConvertToRGB(Texture2D tex)
        {
            RenderTexture srgbRenderTex = new RenderTexture(tex.width, tex.height, 16, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);
            Graphics.Blit(tex, srgbRenderTex);

            Texture2D texFixed = new Texture2D(srgbRenderTex.width, srgbRenderTex.height);
            RenderTexture.active = srgbRenderTex;
            texFixed.ReadPixels(new Rect(0, 0, srgbRenderTex.width, srgbRenderTex.height), 0, 0);
            texFixed.Apply();
            RenderTexture.active = null;

            Object.Destroy(srgbRenderTex);

            return texFixed;
        }

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值