Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 |
助力学习Unity中对图片的处理、用法 为新手节省宝贵的时间,避免采坑! |
文章目录
1
Load Picture To Create —— 加载图片并创建
函数已经简化并封装、调用时将图片路径传入,以及导出路径
整个流程就是:将传入路径的图片,转为流,然后生成到另一个指定目录中
/// <summary>
/// 解析图片,此函数仅为提供可视化测试。
/// (打开项目,选中一个图片。就能将选中的图片写到资源目录下)
/// </summary>
/// <param name="path">图片的路径</param>
/// <param name="targetPath">目标全路径:路径+文件名+后缀</param>
private void AnalysisImage(string path,string targetPath)
{
FileStream fs = new FileStream(path, FileMode.Open); // 使用文件流构造一个二进制读取器,元数据转为二进制值
BinaryReader br = new BinaryReader(fs); //二进制读取类
byte[] imageBuffer = new byte[br.BaseStream.Length]; //转为字节流
br.Read(imageBuffer, 0, Convert.ToInt32(br.BaseStream.Length)); //读所有信息
string textString = System.Convert.ToBase64String(imageBuffer); //转为字符串(未使用,你可以写个Json存下来试试)
fs.Close(); //关
br.Close(); //双关
System.IO.File.WriteAllBytes(targetPath, imageBuffer); //将图片写到Assets目录下,名叫Chinar+index.jpg | imageBuffer:二进制流
AssetDatabase.Refresh(); //刷新文件夹
}
2
Png To Sprite —— Png 转 Sprite
将 PNG 图片转精灵 Sprite 图片
使用场景:将外部Png图片,显示在软件中。设置个头像、设置背景之类的自定义设置功能
using System.IO;
using UnityEngine;
using UnityEngine.UI;
public class ChinarSpriteToPng : MonoBehaviour
{
/// <summary>
/// 按钮点击事件:精灵转PNG图片
/// </summary>
public void OnClick_PngToSprite()
{
//找到场景中的 图片组件,并赋值
GameObject.Find("PNG To Sprite/Sprite").GetComponent<Image>().sprite = PngToSprite(Application.streamingAssetsPath + "/PngToSprite/Chinar1.jpg", 300, 300);
}
/// <summary>
/// IO方式 —— 将PNG转为Sprite精灵图片
/// </summary>
/// <param name="fullPath">读取的PNG图片全路径:路径+文件名+后缀</param>
/// <param name="x">图片尺寸:宽</param>
/// <param name="y">图片尺寸:高</param>
/// <returns></returns>
private Sprite PngToSprite(string fullPath, int x, int y)
{
using (FileStream fs = new FileStream(fullPath, FileMode.Open, FileAccess.Read)) //自动双清
{
fs.Seek(0, SeekOrigin.Begin); //设定当前流的位置
byte[] bytes = new byte[fs.Length]; //创建文件长度缓冲区
fs.Read(bytes, 0, (int) fs.Length); //读取文件
Texture2D texture = new Texture2D(x, y); //创建Texture
texture.LoadImage(bytes);
return Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.one / 2);
}
}
}
3
Sprite To Png —— Sprite 转 Png
将 Unity 中的精灵图片 Sprite 转为 Png 并 IO 保存下来
使用场景:将软件中的图片保存。将指定的UI 精灵图保存到本地
// ========================================================
// 描述:精灵与PNG图片相互转换
// 作者:Chinar
// 创建时间:2019-01-30 11:15:47
// 版 本:1.0
// ========================================================
using System.IO;
using UnityEngine;
public class ChinarSpriteToPng : MonoBehaviour
{
/// <summary>
/// 精灵转PNG图片
/// </summary>
public void OnClick_SpriteToPng()
{
Sprite sprite = Resources.Load<Sprite>("WeChat1"); //读取 资源目录中的 WeChat1文件//动态加载 Sprite
byte[] bt = sprite.texture.EncodeToPNG(); //将Texture转字节流
FileStream fs = new FileStream(Application.streamingAssetsPath + "/SpriteToPng/WeChat1.png", FileMode.Create); //创建PNG文件
using (fs)
{
fs.Write(bt, 0, bt.Length); //写入
fs.Flush();
}
}
}
4
Project —— 项目文件
项目文件为 unitypackage 文件包:
支持
May Be —— 开发者,总有一天要做的事!
Chinar 提供一站式《零》基础教程 使有限时间 具备无限可能! |
Chinar 知你所想,予你所求!( Chinar Blog )
本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究
对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com
对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址