News Contents
信息中心

【asp】图片和Base64编码互相转换

发表日期:2019/4/30      浏览次数:

一、通过jQuery方法转换


html代码部分:

<input type="file" name="file" id="img_upload_file" value="" multiple="multiple" />

<input type="hidden" name="img_upload_base" id="img_upload_base" />

<textarea rows="30" cols="100" id="img_upload_base_text"></textarea>

js代码部分 :

<script src="scripts/jquery-1.8.3.js"></script>

<script type="text/javascript">

    $(function () {

        $("#img_upload_file").change(function () {

            var file = this.files[0];

            var reader = new FileReader();

            reader.readAsDataURL(file);//调用自带方法进行转换  

            reader.onload = function (e) {

                $("#img_upload_show").attr("src", this.result);//将转换后的编码存入src完成预览  

                $("#img_upload_base").val(this.result);//将转换后的编码保存到input供后台使用  

                $("#img_upload_base_text").val(this.result);//显示出  转换后的编码数据   

            };

        });

    });

</script>

这个方法比较简单,省时省力,转换的操作都放到用户浏览器上进行,减少服务器压力。


二 、asp后台处理转换 


html代码部分:

<asp:FileUpload ID="file_upload" runat="server" />

<asp:Button ID="btn" runat="server" Text="后台转换" OnClick="btn_Click" />

<img id="img_upload_show" src="" />


aps后台代码部分:

protected void btn_Click(object sender, EventArgs e)

{

    //获取上传 文件的名称

    string btn_file=  file_upload.PostedFile.FileName;

    //获取 服务器上路径

    string imgPath = Server.MapPath("Imagers/");

    //获取 文件后缀

    string houzui = btn_file.Substring(btn_file.LastIndexOf('.'));

    //上传文件 路径 ,重命名

    string filePath = imgPath + Guid.NewGuid().ToString()+ houzui;

    //上传文件

    file_upload.SaveAs(filePath);

 

    //转换base64

    string result = imgToBase64(filePath);

 

    //写入txt文件中

    string path = Server.MapPath("/Base");

    System.IO.File.WriteAllText(path + "//" + Guid.NewGuid().ToString() + ".txt", result);

}


imagerToBase64的方法:

/// <summary>

/// imager 转换 成Base64

/// </summary>

/// <param name="filePath">文件路径</param>

/// <returns>base64编码</returns>

private string imgToBase64(string filePath)

{

    //用streamread读这个文件

    System.IO.StreamReader sr = new StreamReader(filePath, Encoding.Default, true);

 

    int index;

    //实例化一个内存流

    System.IO.MemoryStream tempStream = new MemoryStream();

    //将流转换为字节数组

    while ((index = sr.BaseStream.ReadByte()) != -1)

    {

        tempStream.WriteByte(((byte)index));

    }

    byte[] array = tempStream.ToArray();

    tempStream.Close();

    //将得到的字节数组转换为base64位编码

    string result = Convert.ToBase64String(array);

    return result;

}

这个方法不太方便,需要先将图片上传至服务器,然后得到图片的路径,再进行 转换。


三、Base64编码转图片


在写这个时候,遇到个bug,Bitmap参数无效,原来是错误的将  gif 的 动态图的编码转成Bitmap所以会报错的 额 。


/// <summary>

/// base64编码的文本 转为    图片

/// </summary>

/// <param name="txtFileName">Base编码的txt文本路径 </param>

private void Base64StringToImage(string txtFileName)

{

    try

    {

        FileStream ifs = new FileStream(txtFileName, FileMode.Open, FileAccess.Read);

        StreamReader sr = new StreamReader(ifs);

        //读取txt里面的内容

        String inputStr = sr.ReadToEnd();

 

        //转图片 

        byte[] bt = Convert.FromBase64String(inputStr);

        System.IO.MemoryStream stream = new System.IO.MemoryStream(bt);

        Bitmap bmp = new Bitmap(stream);

 

        string fileName = txtFileName.Substring(0, txtFileName.IndexOf("."));

 

        if (File.Exists(fileName))

        {

            File.Delete(fileName);

        }

        //存储到服务器 上 

        bmp.Save(fileName + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

        bmp.Save(fileName + ".bmp", ImageFormat.Bmp);

        bmp.Save(fileName + ".gif", ImageFormat.Gif);

        bmp.Save(fileName + ".png", ImageFormat.Png);

        stream.Close();

        sr.Close();

        ifs.Close();

    }

    catch (Exception ex)

    {

        //("Base64StringToImage 转换失败\nException:" + ex.Message);

    }

}





盛大建站承接个人、公司、企业的网站建设、网页设计、网店制作、独立商城制作、外贸网站制作,也承接同行介绍的业务,欢迎联系!
本站承接主要业务如下:
1、提供免备案虚拟主机(网站空间),有独立国内服务器、高速美国服务器、香港服务器、韩国服务器、日本服务器,>> http://www.fuanxx.com
2、网站建设:个人网店制作、企业建站、公司网站、新闻、下载等;论坛、博客网站搭建,承接外贸英文站制作
3、承接阿里巴巴、京东、淘宝、天猫等的商品数据采集
4、网站防钓鱼,可以过360、QQ、搜狗、金山、微信拦截
5、要就发IP网站限制访问系统,防止同行抄袭并保障海外客户访问不受影响,>> http://www.198ip.com
  下一篇:没有了!
十年如一日,我们专注于提供高品质 定制网站建设服务!
您的信任,我们的责任,期待与您的合作!