Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。
Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。例如,在Java Persistence系统Hibernate中,就采用了Base64来将一个较长的唯一标识符(一般为128-bit的UUID)编码为一个字符串,用作HTTP表单和HTTP GET URL中的参数。在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。 (来自百度百科)

通俗来说,我们可以通过base64编码,将图片转换为二进制再转换为字符的形式进行保存,起到存储和传输的目的。

1.将图片转换为字符的形式(解码)

  //解码public static string GetBase64String(Bitmap image){string UserPhoto="";using (MemoryStream ms1 = new MemoryStream()){image.Save(ms1, System.Drawing.Imaging.ImageFormat.Jpeg);byte[] arr1 = new byte[ms1.Length];ms1.Position = 0;ms1.Read(arr1, 0, (int)ms1.Length);ms1.Close();UserPhoto = Convert.ToBase64String(arr1);}return UserPhoto;}

2.将图片base64编码转换为图片(编码)

 //编码public static void SaveImage(string UserPhoto){byte[] arr2 = Convert.FromBase64String(UserPhoto);using (MemoryStream ms2 = new MemoryStream(arr2)){System.Drawing.Bitmap bmp2 = new System.Drawing.Bitmap(ms2);bmp2.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);//bmp2.Save(filePath + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);//bmp2.Save(filePath + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);//bmp2.Save(filePath + ".gif", System.Drawing.Imaging.ImageFormat.Gif);//bmp2.Save(filePath + ".png", System.Drawing.Imaging.ImageFormat.Png);bmp2.Dispose();}}

3. 使用案例

using System;
using System.IO;
using System.Drawing;namespace Base64Test
{class Program{//图片存放位置全路径const string filePath = @"C:\...\Test.jpeg";        static void Main(string[] args){//读图片转为Base64StringSystem.Drawing.Bitmap image = new System.Drawing.Bitmap(filePath);string base64string = GetBase64String(image);Console.WriteLine(base64string);Console.ReadKey();//将Base64String读取为图片//SaveImage(base64string);//Console.WriteLine("保存成功");//Console.ReadKey();}//编码public static void SaveImage(string UserPhoto){byte[] arr2 = Convert.FromBase64String(UserPhoto);using (MemoryStream ms2 = new MemoryStream(arr2)){System.Drawing.Bitmap bmp2 = new System.Drawing.Bitmap(ms2);bmp2.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);//bmp2.Save(filePath + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);//bmp2.Save(filePath + ".bmp", System.Drawing.Imaging.ImageFormat.Bmp);//bmp2.Save(filePath + ".gif", System.Drawing.Imaging.ImageFormat.Gif);//bmp2.Save(filePath + ".png", System.Drawing.Imaging.ImageFormat.Png);bmp2.Dispose();}}//解码public static string GetBase64String(Bitmap image){string UserPhoto="";using (MemoryStream ms1 = new MemoryStream()){image.Save(ms1, System.Drawing.Imaging.ImageFormat.Jpeg);byte[] arr1 = new byte[ms1.Length];ms1.Position = 0;ms1.Read(arr1, 0, (int)ms1.Length);ms1.Close();UserPhoto = Convert.ToBase64String(arr1);}return UserPhoto;}}
}

C# Base64图片编码和解码相关推荐

  1. img图片的预览和下载(iframe基本使用),图片转file格式,file文件转base64格式,base64的编码和解码

    目录 一.根据后端接口返回的URL下载和预览图片 1.调用下载图片函数实现下载图片 2.弹出另一个页面,实现预览图片. 3.不弹出另一个页面,实现下载/预览图片(iframe方式) 4.动态创建ifr ...

  2. php base64解码,PHP Base64 中英文编码 JavaScript 解码

    最新PHP Base64 中英文编码 JavaScript 解码 以下是三零网为大家整理的最新PHP Base64 中英文编码 JavaScript 解码的文章,希望大家能够喜欢! function ...

  3. javascript中的Base64.UTF8编码与解码详解

    javascript中的Base64.UTF8编码与解码详解 本文给大家介绍的是javascript中的Base64.UTF8编码与解码的函数源码分享以及使用范例,十分实用,推荐给小伙伴们,希望大家能 ...

  4. 彻底弄懂base64的编码与解码原理

    作者介绍 背景 base64的编码原理网上讲解较多,但解码原理讲解较少,并且没有对其中的内部实现原理进行剖析.想要彻底了解base64的编码与解码原理,请耐心看完此文,你一定会有所收获. 涉及算法与逻 ...

  5. Base64图片编码的使用

    一.base64编码介绍 二.base64图片使用介绍 三.base64图片编码大小与原图文件大小之间的联系 四.代码实现 一.base64编码介绍 Base64是网络上最常见的用于传输8Bit字节代 ...

  6. base64图片编码大小与原图文件大小之间的联系

    base64图片编码大小与原图文件大小之间的联系 有时候我们需要把canvas画布的图画转换成图片输出页面,而用canvas生成的图片就是base64编码的,它是由数字.字母等一大串的字符组成的,但是 ...

  7. Python:data:image/png;base64图片编码解码

    编码后的内容,可以在浏览器中直接打开,提示:先去掉回车 data类型的Url大致有下面几种形式 data:,<文本数据> data:text/plain,<文本数据> data ...

  8. atob()和btoa() 进行base64的编码和解码

    编码: 解码:

  9. C++ 使用base64进行编码和解码

    1.base64编码的作用: base64编码的东西,任何人都可以解码,所以称之为加密和解密是不合适的,其作用是:便于数据再网络上的传输.举个简单的例子,你使用SMTP协议 (Simple Mail ...

最新文章

  1. Linux实战案例(5)关闭Centos的防火墙
  2. 023_Jedis的发布和订阅
  3. 中南大学夏令营集训营
  4. java 输出流_Java中输入输出流方法总结
  5. Redis 实现用户积分排行榜
  6. 苹果MacBook Air 2022款也将有刘海屏设计
  7. Java关键字static
  8. 蚂蚁、字节、拼多多,你的简历能通过几家?
  9. PCL_基于多项式拟合的法线估计、点云平滑和数据重采样_报错
  10. Niagara Networks网络安全出口解决方案
  11. 存储介质(sd卡,硬盘等)读写速度测试
  12. 正则匹配大于等于号与indexof结合
  13. crontab 问号_Spring - Quartz - cronExpression中问号(?)的解释
  14. 使用Python爬取中国天气网天气数据
  15. C++ 拉格朗日插值法优化 DP
  16. 深度解析用户画像标签体系构建方法
  17. 赠书 !豆瓣 9 分以上的书籍,成为 Java 大佬必看!
  18. C语言--期末前夜刷题计划(吉林大学高级语言程序设计超星慕课作业题为主)
  19. 软件结构分类bs,cs
  20. Windows查看连接过的WiFi信息及密码

热门文章

  1. 拔河游戏java_奥沙利文决赛
  2. python少儿编程培训
  3. linux逐行扫描,FFmpeg怎么区分识别视频是逐行扫描还是隔行扫描
  4. 肖特基二极管反向漏电引起的血案
  5. 软考 软件设计师 下午题-试题三 历年真题
  6. #I. 哆啦A梦的时光机(bfs经典习题)
  7. 计算机显示器hdmi参数项目,DIY电脑冷知识:你的显示器应该接DP还是HDMI接口?...
  8. redirect_uri 参数错10003
  9. 实战分享:地域性站点换友链?侧重点都在这里
  10. 【公告】新博客、新地址,欢迎交换友链