Unity中将Base64编码解码为Texture2D

需求介绍

最近项目中遇到一个需求,用户扫码打开网页,在网页上手绘任意图片,提交后由Unity获取并显示。
与web前端沟通后决定通过长链接监听,先由web前端将图片转码为Base64格式,Unity接收包含图片Base64码的Json包,通过C#解码为Texture2d格式并生成Sprite,最终显示在Canvas上。

转码过程

1.首先通过Convert.FromBase64String(string s)方法,将获取的Base64码解析为字节数组byte[]格式,该方法需要使用System命名空间。
2.再使用Texture2D.LoadImage(byte[] data)方法,将获取的字节数组转化为Texture2D格式。

代码示例

using System;

using UnityEngine;

public static class Base64ToImage{

    /// <summary>
    /// base64编码的文本 转为Texture2D材质
    /// </summary>
    /// <param name="basestr">base64字符串</param>
    /// <returns>转换后的Bitmap对象</returns>
    public static Texture2D Base64StringToImage(string basestr)
    {
        Texture2D t2d = new Texture2D(1, 1);

        try
        {
            byte[] arr = Convert.FromBase64String(basestr);

            t2d.LoadImage(arr);

            Debug.Log("转换成功");
        }

        catch (Exception ex)
        {
            Debug.Log("转换失败");
        }

        return t2d;

    }

}

静态类静态方法。
其中new临时Texture2D对象时,参数长宽可以任意设置,我设的就是(1,1),因为LoadImage方法会重新覆盖对象的长宽。
这是一个很简单的实现,如果有其他需求,比如将图片保存等,可以参考Bitmap的使用,一般会用到System.Drawing这个dll,有时间再补充。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容