Image与Base64String的互转换

     public Image Base64ToImage(string base64String)
        {
            // Convert Base64 String to byte[]
            byte[] imageBytes = Convert.FromBase64String(base64String);
            MemoryStream ms = new MemoryStream(imageBytes, 0, imageBytes.Length);

            // Convert byte[] to Image
            ms.Write(imageBytes, 0, imageBytes.Length);
            Image image = Image.FromStream(ms, true);
            return image;
        }

        public string CreateImgToBase64(string imagePath)
        {
            Bitmap bmp = (Bitmap)Image.FromFile(imagePath);
            MemoryStream stream = new MemoryStream();
            bmp.Save(stream, System.Drawing.Imaging.ImageFormat.Bmp);
            stream.Position = 0;
            byte[] data = new byte[stream.Length];
            stream.Read(data, 0, (int)stream.Length);
            stream.Close();

            string base64String = string.Empty;
            try
            {
                base64String = System.Convert.ToBase64String(data, 0, data.Length);
            }
            catch
            {
                throw;
            }

            StreamWriter outFile;

            try
            {
                outFile = new StreamWriter(string.Concat(imagePath, ".txt"), false, Encoding.ASCII);
                outFile.Write(base64String);
                outFile.Close();

                return base64String;
            }
            catch
            {
                throw;
            }

            bmp.Dispose();
        }

        public void CreateBase64StrToImage(string filePath)
        {
            StreamReader reader = new StreamReader(filePath);
            string str = reader.ReadToEnd();

            byte[] bitmapData = new byte[str.Length];
            bitmapData = Convert.FromBase64String(FixBase64ForImage(str));
            MemoryStream streamBitmap = new MemoryStream(bitmapData);

            Bitmap bitImage = new Bitmap((Bitmap)Image.FromStream(streamBitmap));
            bitImage.Save(filePath.Substring(0, filePath.Length - 4), System.Drawing.Imaging.ImageFormat.Jpeg);
            bitImage.Dispose();
        }

        static string FixBase64ForImage(string image)
        {
            StringBuilder sbText =
                new StringBuilder(image, image.Length);

            sbText.Replace("\r\n", string.Empty);
            sbText.Replace(" ", string.Empty);

            return sbText.ToString();
        }
时间: 2024-10-10 17:16:15

Image与Base64String的互转换的相关文章

opengl中场景变换|2D与3D互转换(转)

opengl中场景变换|2D与3D互转换 我们生活在一个三维的世界——如果要观察一个物体,我们可以: 1.从不同的位置去观察它.(视图变换) 2.移动或者旋转它,当然了,如果它只是计算机里面的物体,我们还可以放大或缩小它.(模型变换) 3.如果把物体画下来,我们可以选择:是否需要一种“近大远小”的透视效果.另外,我们可能只希望看到物体的一部分,而不是全部(剪裁).(投影变换) 4.我们可能希望把整个看到的图形画下来,但它只占据纸张的一部分,而不是全部.(视口变换) 这些,都可以在OpenGL中实

Javascript Array和String的互转换

Array类可以如下定义: var aValues = new Array(); 如果预先知道数组的长度,可以用参数传递长度 var aValues = new Array(20); ------------------如下2种定义方式是一样的--------1----------- var aColors = new Array(); aColors[0] = "red"; aColors[1] = "green"; aColors[2] = "blue

Javascript Array和String的互转换。

Array类可以如下定义: var aValues = new Array(); 如果预先知道数组的长度,可以用参数传递长度 var aValues = new Array(20); ------------------如下2种定义方式是一样的--------1----------- var aColors = new Array(); aColors[0] = "red"; aColors[1] = "green"; aColors[2] = "blue

CSS编码设置篇utf-8与gb2312互转换

一.查看CSS文件编码 1.高版本DW新建将自带编码charset代码 在CSS文件中没有编码声明代码也不代表CSS文件没有编码这一特征,在高版本的DW软件中新建CSS文件会自动添加上编码声明代码. @charset "utf-8"; /*css Document*/ 2.在CSS文件中没有发现charset编码代码如何查看编码类型? 在DW软件中,打开CSS文件后,DW代码右下角状态栏可以看出当前CSS文件编码类型 /*CSS divcss* 石家庄水泵厂/ body{text-al

js时间戳和日期互转换

1.日期转时间戳 1 //获取当前时间戳 2 new Date().getTime(): 3 //获取固定时间的时间戳 4 new Date('2018-12-01 12:22').getTime() 2.时间戳转日期 1 function formatDateTime(timeStamp) { 2 var date = new Date(); 3 date.setTime(timeStamp * 1000); 4 var y = date.getFullYear(); 5 var m = da

C# string byte[] Base64 常用互相转换

参考: http://www.cnblogs.com/zxx193/p/3605238.html?utm_source=tuicool http://www.cnblogs.com/freeliver54/p/3430956.html http://www.cnblogs.com/simhare/archive/2007/07/18/821938.html 定义string变量为str,内存流变量为ms,比特数组为bt 1.字符串=>比特数组 (1)byte[] bt=System.Text.E

dp,px,pt,sp 的区别 以及dp 和 px 互转

dp = dip : device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素. px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多. pt: point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,非常简单易用: sp: scaled pixels(放大像素). 主要用于字体显示best for

day17 包装类、日期类

包装类 作用:1.丰富了基本数据类型只能存放值的问题,还提供了大量的方法或常量. 2.包装类充当了基本数据类型和引用数据类型转换的桥梁. 应用层面:包装类.String.基本数据类型的互相转换. 1.基本数据类型转为String: String str = Integer.toString(10): String str = 10 + "": 2.String转换为基本数据类型: int i = Integer.parseInt(str): 3.基本数据类型和包装类互转换: 语法糖--

Java字符串转16 进制工具类Hex.java

原文:Java字符串转16 进制工具类Hex.java 源代码下载地址:http://www.zuidaima.com/share/1550463378410496.htm Java 字符串转 16 进制工具类 Hex.java 实现 16进制 0xfecd .. 和 java 字符串之间的互转换! 如果做开发,通常用户登陆密码都会 mad5(salt + pwd) 然后再将 md 之后的数据 hex 一下. 这个工具类,就是实现此效果的. /* * */ package com.zuidaim