您的位置:首页 > 产品设计 > UI/UE

uinty本地图片的读取和剪裁

2016-05-17 18:28 597 查看
//读取图片

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);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: