uinty本地图片的读取和剪裁

来源:互联网 发布:腾讯云 centos 7 pptp 编辑:程序博客网 时间:2024/05/18 13:44
//读取图片
    public Texture2D loadTexture(string FullPath )
    {
        //创建文件读取流
        FileStream fileStream = new FileStream(FullPath, FileMode.Open, FileAccess.Read);
        fileStream.Seek(0, SeekOrigin.Begin);
        //创建文件长度缓冲区
        byte[] bytes = new byte[fileStream.Length];
        //读取文件
        fileStream.Read(bytes, 0, (int)fileStream.Length);
        //释放文件读取流
        fileStream.Close();
        fileStream.Dispose();
        fileStream = null;


        //创建Texture
        int width = 1024;
        int height = 1024;
        Texture2D texture = new Texture2D(width, height);
        texture.LoadImage(bytes);


        return texture;
    }
    /// <summary>
    /// 正方型裁剪
    /// 以图片中心为轴心,截取正方型,然后等比缩放
    /// 用于头像处理
    /// </summary>
    ///  <param name="texture">要处理的图片</param>
    ///  <param name="saveurl">保存路径</param> 
    /// <param name="side">指定的边长(正方型)</param>
    public void CutForSquare(Texture2D texture, string saveurl,int side) 
    {
        Texture2D tex;
        int TextureWidth = texture.width;//图片的宽
        int TextureHeight = texture.height;//图片的高
        //如果图片的高和宽都比side大
        if (TextureWidth > side && TextureHeight > side)
        {
            tex = new Texture2D(side, side);
            UnityEngine.Color[] col = texture.GetPixels((TextureWidth - side) / 2, (TextureWidth - side) / 2, side, side);
            tex.SetPixels(0, 0, side, side, col);
            tex.Apply();
            byte[] btr = tex.EncodeToPNG();
            File.WriteAllBytes(saveurl, btr);
        }
        //如果图片的宽或高小于side
        if (TextureWidth < side || TextureHeight < side)
        {
            int TextureSide = Mathf.Min(TextureWidth, TextureHeight);
            tex = new Texture2D(TextureSide, TextureSide);
            UnityEngine.Color[] col = texture.GetPixels((TextureWidth - TextureSide) / 2, (TextureHeight - TextureSide) / 2, TextureSide, TextureSide);
            tex.SetPixels(0, 0, TextureSide, TextureSide, col);
            tex.Apply();
            byte[] btr = tex.EncodeToPNG();


            File.WriteAllBytes(saveurl, btr);
        }
        
    }
0 0
原创粉丝点击