zoukankan      html  css  js  c++  java
  • Unity 图片的旋转

    
            /// <summary>
            /// 图片逆时针旋转90度
            /// </summary>
            /// <param name="src">原图片二进制数据</param>
            /// <param name="srcW">原图片宽度</param>
            /// <param name="srcH">原图片高度</param>
            /// <param name="desTexture">输出目标图片</param>
            public static void RotationLeft90(Color32[] src, int srcW, int srcH, Texture2D desTexture)
            {
                if (pixelsLen != src.Length || des == null)
                {
                    pixelsLen = src.Length;
                    des = new Color32[pixelsLen];
                }
    
                if (desTexture.width != srcH || desTexture.height != srcW)
                {
                    desTexture.Resize(srcH, srcW);
                }
    
                for (int i = 0; i < srcW; i++)
                {
                    for (int j = 0; j < srcH; j++)
                    {
                        des[i * srcH + j] = src[(srcH - 1 - j) * srcW + i];
                    }
                }
    
                desTexture.SetPixels32(des);
                desTexture.Apply();
            }
    
    
            /// <summary>
            /// 图片顺时针旋转90度
            /// </summary>
            /// <param name="src">原图片二进制数据</param>
            /// <param name="srcW">原图片宽度</param>
            /// <param name="srcH">原图片高度</param>
            /// <param name="desTexture">输出目标图片</param>
            public static void RotationRight90(Color32[] src, int srcW, int srcH, Texture2D desTexture)
            {
                if (pixelsLen != src.Length || des == null)
                {
                    pixelsLen = src.Length;
                    des = new Color32[pixelsLen];
                }
    
                if (desTexture.width != srcH || desTexture.height != srcW)
                {
                    desTexture.Resize(srcH, srcW);
                }
    
                for (int i = 0; i < srcH; i++)
                {
                    for (int j = 0; j < srcW; j++)
                    {
                        des[(srcW - j - 1) * srcH + i] = src[i * srcW + j];
                    }
                }
    
                desTexture.SetPixels32(des);
                desTexture.Apply();
            }
    
            /// <summary>
            /// 图片旋转180度
            /// </summary>
            /// <param name="src">原图片二进制数据</param>
            /// <param name="srcW">原图片宽度</param>
            /// <param name="srcH">原图片高度</param>
            /// <param name="desTexture">输出目标图片</param>
            public static void Rotation180(Color32[] src, int srcW, int srcH, Texture2D desTexture)
            {
                if (pixelsLen != src.Length || des == null)
                {
                    pixelsLen = src.Length;
                    des = new Color32[pixelsLen];
                }
    
                if (desTexture.width != srcW || desTexture.height != srcH)
                {
                    desTexture.Resize(srcW, srcH);
                }
    
                for (int i = 0; i < srcH; i++)
                {
                    for (int j = 0; j < srcW; j++)
                    {
                        des[i * srcW + j] = src[(srcH - i) * srcW - j - 1];
                    }
                }
    
                desTexture.SetPixels32(des);
                desTexture.Apply();
            }
    
            /// <summary>
            /// 图片镜像
            /// </summary>
            /// <param name="src">原图片二进制数据</param>
            /// <param name="srcW">原图片宽度</param>
            /// <param name="srcH">原图片高度</param>
            /// <param name="desTexture">输出目标图片</param>
            public static void Mirror(Color32[] src, int srcW, int srcH, Texture2D desTexture)
            {
                if (pixelsLen != src.Length || des == null)
                {
                    pixelsLen = src.Length;
                    des = new Color32[pixelsLen];
                }
    
                if (desTexture.width != srcW || desTexture.height != srcH)
                {
                    desTexture.Resize(srcW, srcH);
                }
    
                for (int i = 0; i < srcH; i++)
                {
                    for (int j = 0; j < srcW; j++)
                    {
                        des[i * srcW + j] = src[(i + 1) * srcW - j - 1];
                    }
                }
    
                desTexture.SetPixels32(des);
                desTexture.Apply();
            }
    
            /// <summary>
            /// 图片拷贝
            /// </summary>
            /// <param name="src">原图片二进制数据</param>
            /// <param name="srcW">原图片宽度</param>
            /// <param name="srcH">原图片高度</param>
            /// <param name="desTexture">输出目标图片</param>
            public static void Copy(Color32[] src, int srcW, int srcH, Texture2D desTexture)
            {
                if (desTexture.width != srcW || desTexture.height != srcH)
                {
                    desTexture.Resize(srcW, srcH);
                }
    
                desTexture.SetPixels32(src);
                desTexture.Apply();
            }
    
  • 相关阅读:
    springboot学习(一):创建项目
    CS 224D lecture 5 笔记 分类: CS224D notes 2015-07-18 00:04 3人阅读 评论(0) 收藏
    CS224D Lecture 4 札记
    Ubuntu Compress a big file into plenty of small parts(压缩文件为几个小部分,) 分类: Ubuntu Trick 2015-07-13 21:29 1人阅读 评论(0) 收藏
    CS 224D Lecture 3札记 分类: CS224D notes 2015-07-12 12:03 5人阅读 评论(0) 收藏
    Ubuntu设置环境变量 分类: Ubuntu Trick 2015-07-12 01:03 6人阅读 评论(0) 收藏
    CS224D Lecture2 札记 分类: CS224D notes 2015-07-09 16:40 9人阅读 评论(0) 收藏
    CS224D Lecture 1 札记 分类: CS224D notes 2015-07-07 21:48 20人阅读 评论(0) 收藏
    Ubuntu Python Setup 分类: Ubuntu Trick 2015-07-03 23:26 5人阅读 评论(0) 收藏
    Ubuntu Matlab 2014b Setup 分类: Ubuntu Trick 2015-07-03 23:25 12人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/jingxuan2583/p/14148160.html
Copyright © 2011-2022 走看看