C#图片转Base64详解

一、Base64编码概述

Base64是一种编码方式,将二进制数据转换成 ASCII 字符集中的可打印字符。Base64 是网络上最常见的用于传输二进制数据的编码方式之一,它可以将图片、音频、视频等二进制数据转换成文本格式,方便传输和处理。

示例代码:

  public static string ToBase64String(byte[] bytes) 
  {
      return Convert.ToBase64String(bytes);
  }
  

Base64编码方式有多种,常用的有RFC3548规定的标准 Base64、URL-Safe Base64、直接将Base64编码后的字符串去掉一些字符即可得到 Base64 Url。在C#中,可以使用 Convert.ToBase64String 方法将二进制数据转换成 Base64 字符串。

二、图片转 Base64 的原理

在C#中,将图片转换成 Base64 字符串的原理非常简单,就是将图片二进制数据读取出来,然后使用 Convert.ToBase64String 方法将二进制数据转换成字符串:

示例代码:

  public static string ImageToBase64(Image image, ImageFormat format) 
  {
      using(MemoryStream ms = new MemoryStream()) 
      {
          //将图像以指定的格式保存到流中
          image.Save(ms, format);
      
          //将流转换成字节数组
          byte[] bytes = ms.ToArray();
      
          //将字节数组转换成 Base64 字符串
          return Convert.ToBase64String(bytes);
      }
  }
  

上面的代码中,使用了 C# 中的 Image 类和 ImageFormat 类读取图片数据,然后使用了 MemoryStream 类将数据保存到一个内存流中,最后使用 Convert.ToBase64String 方法将内存流中的数据转换成 Base64 字符串。

三、C#图片转 Base64的应用

1、HTML/CSS中图片转 Base64

在HTML/CSS中,使用 Base64 可以将图片直接嵌入到HTML/CSS代码中,减少页面的请求次数,加快页面加载速度。下面是实现图片转 Base64 的代码:

示例代码:

  <style type="text/css">
  .demo {
      background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAABkCAIAAACPX4IEWAAAAA3NCSVQICAjb4U/gAAAgAElEQVR4xu2deZBU1bXvH+nl79l2yy7sddd999Hy7g6JkcAAAAASUVORK5CYII=);
      width: 100px;
      height: 100px;
  }
  </style>
  
  <div class="demo"></div>
  

上面的代码中,通过将 Base64 编码的图片数据直接嵌入到 CSS 中,实现了在页面中显示图片的效果。

2、ASP.NET 中图片转 Base64

在ASP.NET中,可以将图片转换成Base64字符串,然后将Base64字符串存储在数据库中,或者JSON数据中,方便传输。

示例代码:

  protected void Page_Load(object sender, EventArgs e)
  {
      string imageUrl = "http://www.example.com/image.jpg";
      byte[] imageBytes = new WebClient().DownloadData(imageUrl);
      
      string base64String = Convert.ToBase64String(imageBytes);
      
      Response.Write(base64String);
  }
  

上面的代码中,使用了 WebClient 类从远程网站获取图片二进制数据,然后使用 Convert.ToBase64String 方法将二进制数据转换成 Base64 字符串,最后将 Base64 字符串写入 HttpResponse 中返回前端页面。

3、Windows Form 中图片转 Base64

在 Windows Form 中,可以将图片转换成 Base64 字符串,然后进行加密、显示等操作。

示例代码:

  private void btnOpen_Click(object sender, EventArgs e)
  {
      OpenFileDialog dialog = new OpenFileDialog();
      dialog.Filter = "图片文件|*.jpg;*.jpeg;*.bmp;*.png;*.gif";

      if (dialog.ShowDialog() == DialogResult.OK)
      {
          using (FileStream fs = new FileStream(dialog.FileName, FileMode.Open))
          {
              //从文件流中读取图片数据
              byte[] bytes = new byte[fs.Length];
              fs.Read(bytes, 0, bytes.Length);

              //将图片数据转换成 Base64 字符串
              string base64String = Convert.ToBase64String(bytes);

              //将 Base64 字符串显示在文本框中
              txtResult.Text = base64String;
          }
      }
  }
  

上面的代码中,使用了 OpenFileDialog 类从本地文件打开图片文件,然后使用 FileStream 类从文件流中读取图片数据,接着使用 Convert.ToBase64String 方法将图片数据转换成 Base64 字符串,最后将 Base64 字符串显示在 Windows Form 界面的文本框中。

4、Web API 中图片转 Base64

在 Web API 中,可以将图片转换成 Base64 字符串,然后将 Base64 字符串作为 JSON 数据返回给前端页面。

示例代码:

  [HttpGet]
  [Route("getimage")]
  public IHttpActionResult GetImage(string imageUrl)
  {
      byte[] imageBytes = new WebClient().DownloadData(imageUrl);

      string base64String = Convert.ToBase64String(imageBytes);

      return Json(new { imageBase64 = base64String });
  }
  

上面的代码中,使用了 Web API 的 Get 方法获取远程图片,然后使用 Convert.ToBase64String 方法将图片数据转换成 Base64 字符串,最后将 Base64 字符串作为 JSON 数据返回给前端页面。

5、WPF 中图片转 Base64

在 WPF 中,可以将图片转换成 Base64 字符串,然后将 Base64 字符串显示在 WPF 界面的图片控件中。

示例代码:

  private void btnOpen_Click(object sender, RoutedEventArgs e)
  {
      OpenFileDialog dialog = new OpenFileDialog();
      dialog.Filter = "图片文件|*.jpg;*.jpeg;*.bmp;*.png;*.gif";

      if (dialog.ShowDialog() == true)
      {
          using (MemoryStream ms = new MemoryStream())
          {
              //从文件流中读取图片数据
              BitmapImage bi = new BitmapImage();
              bi.BeginInit();
              bi.UriSource = new Uri(dialog.FileName);
              bi.EndInit();

              //将图片数据转换成 Base64 字符串
              JpegBitmapEncoder encoder = new JpegBitmapEncoder();
              encoder.Frames.Add(BitmapFrame.Create(bi));
              encoder.Save(ms);
              byte[] bytes = ms.ToArray();
              string base64String = Convert.ToBase64String(bytes);

              //将 Base64 字符串显示在图片控件中
              imgPhoto.Source = bi;
          }
      }
  }
  

上面的代码中,使用了 OpenFileDialog 类从本地文件打开图片文件,然后使用 BitmapImage 类从文件流中读取图片数据,接着使用 JpegBitmapEncoder 类将图片数据转换成 Base64 字符串,最后将 Base64 字符串显示在 WPF 界面的图片控件中。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/245766.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 13:11
下一篇 2024-12-12 13:11

相关推荐

  • 用Python绘制酷炫图片

    在本篇文章中,我们将展示如何使用Python绘制酷炫的图片。 一、安装Python绘图库 在使用Python绘制图片之前,我们需要先安装Python绘图库。Python有很多绘图库…

    编程 2025-04-29
  • 使用axios获取返回图片

    使用axios获取返回图片是Web开发中很常见的需求。本文将介绍如何使用axios获取返回图片,并从多个方面进行详细阐述。 一、安装axios 使用axios获取返回图片前,首先需…

    编程 2025-04-29
  • Python 图片转表格

    本文将详细介绍如何使用Python将图片转为表格。大家平时在处理一些资料的时候难免会遇到图片转表格的需求。比如从PDF文档中提取表格等场景。当然,这个功能也可以通过手动复制、粘贴,…

    编程 2025-04-29
  • Python缓存图片的处理方式

    本文将从多个方面详细阐述Python缓存图片的处理方式,包括缓存原理、缓存框架、缓存策略、缓存更新和缓存清除等方面。 一、缓存原理 缓存是一种提高应用程序性能的技术,在网络应用中流…

    编程 2025-04-29
  • Python如何抓取图片数据

    Python是一门强大的编程语言,能够轻松地进行各种数据抓取与处理。抓取图片数据是一个非常常见的需求。在这篇文章中,我们将从多个方面介绍Python如何抓取图片数据。 一、使用ur…

    编程 2025-04-29
  • Python利用Image加图片的方法

    在Python中,利用Image库可以快速处理图片,并加入需要的图片,本文将从多个方面详细阐述这个操作。 一、Image库的安装和基础操作 首先,我们需要在Python中安装Ima…

    编程 2025-04-28
  • Avue中如何按照后端返回的链接显示图片

    Avue是一款基于Vue.js、Element-ui等技术栈的可视化开发框架,能够轻松搭建前端页面。在开发中,我们使用到的图片通常都是存储在后端服务器上的,那么如何使用Avue来展…

    编程 2025-04-28
  • 使用CKSlide实现图片轮播

    CKSlide是一个基于jQuery的插件,可以方便地为网页添加幻灯片和图片轮播效果。使用CKSlide可以让网站更加生动、活泼,给用户带来更好的体验。 一、CKSlide基本用法…

    编程 2025-04-28
  • Python中使用socket传输图片

    本文将从多个方面介绍如何使用Python中的socket模块传输图片,涉及到准备工作、发送方部分和接收方部分的详细代码实现。 一、准备工作 在使用Python中的socket模块进…

    编程 2025-04-28
  • Python窗口中导入图片

    Python作为一种高级语言,在图形界面的应用和操作方面越来越得心应手。本篇文章将详细阐述Python窗口中导入图片的方法和实现。 一、导入图片的准备工作 在导入图片前,我们需要先…

    编程 2025-04-28

发表回复

登录后才能评论