//读取图片
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);
}
}
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);
}
}