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);
}
}
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
- uinty本地图片的读取和剪裁
- 流的方式读取本地图片和网络图片
- 详解Android读取本地图片和网络图片的方法
- 图片的剪裁处理
- 读取本地存储的图片
- c#缩放和剪裁图片
- Android图片选取和剪裁头像的相关问题
- RUP的剪裁原理和剪裁过程
- RUP的剪裁原理和剪裁过程
- java -- 读取和输出图片到本地
- 网站图片剪裁的比例
- Android图片剪裁的实现
- Android图片的剪裁处理
- Glide-图片的剪裁(ScaleType)
- 修改图片名和剪裁图片
- Uinty时钟,和对物体移动速度的控制
- Uinty ScriptableObject的用法
- Uinty ScriptableObject的用法
- 深入学习微框架:Spring Boot
- apache服务器 内面可以访问 外面访问不了
- 自定义控件(继承系统控件,非自绘)
- 使用nohup进入后台,nohup.out内信息显示不及时
- POJO模式
- uinty本地图片的读取和剪裁
- python 二维码实现
- qt的一些基础知识
- ZigZag Conversion
- CocoaPods pod install/pod update更新慢的问题
- 一个矩阵中最大的二维矩阵(元素和最大)
- POJ 3264 Balanced Lineup
- istudy学生端项目的总结(一)
- Android AndroidStudio JSR/RET are not supported with computeFrames option