C#与unity中base64string和图片互转

C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.IO;
namespace test_CS_1
{
    class Program
    {

        static void Main(string[] args)
        {

            string fileDir = "E:/DX12/Sketch3DToolkit-master/matlab/";
            //文件名称
            string filePath = Path.Combine(fileDir, "new");
            string UserPhoto;

            //读图片转为Base64String
            System.Drawing.Bitmap bmp1 = new System.Drawing.Bitmap(Path.Combine(fileDir, "2.png"));
            using (MemoryStream ms1 = new MemoryStream())
            {
                //将文件指定格式保存到指定流中
                bmp1.Save(ms1, System.Drawing.Imaging.ImageFormat.Png);
                byte[] arr1 = new byte[ms1.Length];
                ms1.Position = 0;
                //从当前流读取字节块,并写入缓存区
                ms1.Read(arr1, 0, (int)ms1.Length);
                ms1.Close();
                //将缓存区数据byte[],转为base64string
                UserPhoto = Convert.ToBase64String(arr1);
            }

            //将Base64String转为图片并保存
            byte[] arr2 = Convert.FromBase64String(UserPhoto);
            using (MemoryStream ms2 = new MemoryStream(arr2))
            {
                System.Drawing.Bitmap bmp2 = new System.Drawing.Bitmap(ms2);
                //以指定格式保存到指定文件
                bmp2.Save(filePath + ".png", System.Drawing.Imaging.ImageFormat.Png);

            }

        }
    }
}

unity:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.IO;

public class test_texture2d : MonoBehaviour {

    // Use this for initialization
    //base64转图片
    public string Base64ToTexture2d(string Base64STR)
    {
        Texture2D pic = new Texture2D(1111, 1111);
        byte[] data = System.Convert.FromBase64String(Base64STR);
        pic.LoadImage(data);
        byte[] bytes = pic.EncodeToPNG();

        //下面是为了方便了解图片的信息写的
        string year = System.DateTime.Now.Year.ToString();
        string month = System.DateTime.Now.Month.ToString();
        string day = System.DateTime.Now.Day.ToString();
        string hour = System.DateTime.Now.Hour.ToString();
        string minute = System.DateTime.Now.Minute.ToString();
        string secend = System.DateTime.Now.Second.ToString();
        //存储路径
        string FileFullPath = Application.dataPath/*这是获取assets前的文件路径*/ + "/" + year + "-" + month + "-" + day + "-" + hour + "-" + minute + "-" + secend + ".png";

        File.WriteAllBytes(FileFullPath, bytes);
        return FileFullPath;
    }
    //图片转base64string
    public string Texture2dToBase64(string texture2d_path)
    {
        //将图片文件转为流文件
        FileStream fs = new System.IO.FileStream(texture2d_path, System.IO.FileMode.Open, System.IO.FileAccess.Read);
        byte[] thebytes = new byte[fs.Length];

        fs.Read(thebytes, 0, (int)fs.Length);
        //转为base64string
        string base64_texture2d = Convert.ToBase64String(thebytes);
        return base64_texture2d;
    }
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }
}

注意:需要生成其他格式图片,改相应的输出图片格式方法。

时间: 2024-08-10 21:29:25

C#与unity中base64string和图片互转的相关文章

在Unity 3D中加入Image图片

在Unity 3D中加入Image图片,我刚开是加不进去,为什么呢?因为没有图片,图如下: 原因就是我们没有把图片设置为Script,图片的格式还是默认的那个,这只能作为贴图使用.我们将图片进行如下设置就Ok了.

Unity中利用Vuforia制作AR同时令3D模型出现在2D图片前

如需转载请保留本文链接. 版本号:5.5.0 需配置:SDK,JDK,Vufoira的Unity包,Vufoira图片包 使用工具:UGUI 讲Canvas中的Render Mode改为:Screen Space-Camera, Render Camera中拖入AR相机下的Camera,结束. 设置如图:

有关png图片在Unity中会有白边的问题

经过一周的时间,差不多才解决了这个问题一定要记录一下. 主要遇到的困难就是png文件在转换为bytes文件后会出现白边的现象 c# - How can I programatically load a texture into an Image the same way the Unity Editor does?这个地方将问题说明的很详细. 因为我们项目会使用到大量的图片资源(png格式),但是在iOS系统会有一个非常大的问题,iOS会默认按照最大格式来保存图片.这将会导致包体安装完之后非常的

关于Unity中的NGUI和UGUI

用Unity开发2D游戏,有三套关系 1.GUI:Unity本身的对象 2.NGUI:以前在Unity中广泛来做2D的,是第三方的包,需要安装 3.UGUI:Unity5.X后,Unity找到NGUI的作者,开发了UGUI,变成内置于Unity中的包,官方主推 所有的元素都在Unity的UI工具栏 3D做2D游戏的方法: 1: 使用正交摄像机;2: 使用透视摄像机,将2D元素移动到合适的距离. 例如设计分辨率为 960x640, 得到在3D世界里面一个图片的大小w*h米,将这个图片移动到一定的距

unity3d之从3ds max导入素材到unity中的设置

我们制造一个子弹的模型 1 首先设置3d max中参数,设置Customize->Units Setup Metic为厘米 2 建模,这里我们使用plane,一个平面,如图 3 然后导出 4 unity中模型设置,如图 在这里有个参数Scale Factor,这个参数很重要,设置小了,导致在unity里面可能看不到,大了又不合适. 5 创建一个material 6 创建一个shader,把这个shader赋值给刚才创建的material 这里的shader代码如下 Shader "Angr

【原创翻译】初识Unity中的Compute Shader

一直以来都想试着自己翻译一些东西,现在发现翻译真的很不容易,如果你直接把作者的原文按照英文的思维翻译过来,你会发现中国人读起来很是别扭,但是如果你想完全利用中国人的语言方式来翻译,又怕自己理解的不到位,反而与作者的愿意相悖.所以我想很多时候,国内的译者也是无奈吧,下次再看到译作也会抱着一些感同身受的态度去读.这是我第一次翻译整篇文章,能力有限,望见谅,翻译不好的地方也希望大家指出来. 其实ComputeShader在Unity中出现已经有蛮长的一段时间了,因为自己一直对Shader比较感兴趣,所

Spine工具在Unity中的使用

Spine工具以前都是跟Cocos 2d结合的比较多,很多人以为Unity有了Toolkit 2d和NGUI不需要Spine了,其实这种理解是错误的,Spine非常适合Unity,不需要Toolkit 2D,自己本身就可以适应Unity. 而且由于他的资源量非常少,在效率和安装包方面都比Toolkit 2D好一些,现在Spine工具已经开始在Unity中使用了. Spine说白了它就是一种调试2D骨骼动画的工具,经过它调试的工具如何在Unity中使用?我们下面开始围绕这个问题展开讨论. 首先我们

Unity中2D和UGUI图集的理解与使用

图集 什么是图集? 在使用3D技术开发2D游戏或制作UI时(即使用GPU绘制),都会使用到图集,而使用CPU渲染的2D游戏和UI则不存在图集这个概念(比如Flash的原生显示列表),那么什么是图集呢?准确的说法图集是一张包含了多个小图的大图和一份记录了每个小图id.位置.尺寸等数据的数据文件,一个图集应该对应两个文件,当然也有人把数据集成到图片中,导致看起来只有一张图片(参考自DragonBones的做法). 为什么要用图集? 在GPU已经成为PC.手机等设备的必备组件的现在,把所有显示的绘制操

解读Unity中的CG编写Shader系列四——unity中的圆角矩形shader

上篇文章中我们掌握了表面剔除和剪裁模式 这篇文章将利用这些知识实现一个简单的,但是又很常用的例子:把一张图片做成圆角矩形 例3:圆角矩形Shader 好吧我承认在做这个例子的时候走了不少弯路,由于本人对矩阵的知识掌握已经悉数还给老师,所以一开始用了一些笨办法计算圆角矩形区域. 我们知道TEXTCOORD0是一个以对象为坐标系的坐标,并且范围在该坐标的第一象限,取值为(0,0)到(1,1) 那么我们把每一张图片都看做一张1X1大小的矩形 我们要在1X1大小的矩形中擦除4个角,应该是这样: 以左上角