C#中图片BYTE[]和base64string的相互转换

概述

本篇主要讲解c#中图片BYTE[]和base64string的相互转换

编码规则

Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码。它将需要编码的数据拆分成字节

数组。以3个字节为一组。按顺序排列24 位数据,再把这24位数据分成4组,即每组6位。再在每组的的最高位前

补两个0凑足一个字节。这样就把一个3字节为一组的数据重新编码成了4个字节。当所要编码的数据的字节数不是

3的整倍数,也就是说在分组时最后一组不够3个字节。这时在最后一组填充1到2个0字节。并在最后编码完成后在

结尾添加1到2个 “=”。

解码规则

解码过程就是把4个字节再还原成3个字节再根据不同的数据形式把字节数组重新整理成数据。

图片到byte[]再到base64string的转换

                 Bitmap bmp = new Bitmap(filepath);
                 MemoryStream ms = new MemoryStream();
                 bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                 byte[] arr = new byte[ms.Length];
                 ms.Position = 0;
                 ms.Read(arr, 0, (int)ms.Length);
                 ms.Close();
             string     pic = Convert.ToBase64String(arr);

base64string到byte[]再到图片的转换

                     byte[] imageBytes = Convert.FromBase64String(pic);
                     //读入MemoryStream对象
                     MemoryStream memoryStream = new MemoryStream(imageBytes, 0, imageBytes.Length);
                     memoryStream.Write(imageBytes, 0, imageBytes.Length);
                     //转成图片
                     Image image = Image.FromStream(memoryStream);

BASE64编码加密

http://base64.xpcha.com/

总结

现在的数据库开发中:图片的存放方式一般有CLOB:存放base64string

一般推荐使用byte[]。因为图片可以直接转换为byte[]存放到数据库中

若使用base64string 还需要从byte[]转换成base64string 。更浪费性能。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-07 18:16:41

C#中图片BYTE[]和base64string的相互转换的相关文章

C#中图片.BYTE[]和base64string的转换

在C#中 图片到byte[]再到base64string的转换: Bitmap bmp = new Bitmap(filepath); MemoryStream ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); byte[] arr = new byte[ms.Length]; ms.Position = 0; ms.Read(arr, 0, (int)ms.Length); ms.Clo

Universal App图片文件和图片byte[]信息转换为bitmap

1. 打开图片文件并转换为BitmapImage类 首先要做的自然是打开一个图片文件了,可以使用FileOpenPicker来手动选择图片,总之能拿到一个StorageFile都行. //打开图片选择器,选择要发送的图片 var openPicker = new FileOpenPicker { ViewMode = PickerViewMode.Thumbnail, SuggestedStartLocation = PickerLocationId.PicturesLibrary }; ope

简单地Android中图片的三级缓存机制

我们不能每次加载图片的时候都让用户从网络上下载,这样不仅浪费流量又会影响用户体验,所以Android中引入了图片的缓存这一操作机制. 原理: 首先根据图片的网络地址在网络上下载图片,将图片先缓存到内存缓存中,缓存到强引用中 也就是LruCache中.如果强引用中空间不足,就会将较早存储的图片对象驱逐到软引用(softReference)中存储,然后将图片缓存到文件(内部存储外部存储)中:读取图片的时候,先读取内存缓存,判断强引用中是否存在图片,如果强引用中存在,则直接读取,如果强引用中不存在,则

FreeMark对导出Word中图片的处理

当导出的Word中带有图片时,我们可以创建一个带有图片的word模板,并将其保存成xml文档.此时我们能看到这样一段代码: <w:binData w:name="wordml://03000001.png" xml:space="preserve">iVBORw0KGgo...此处省略base64编码...AASUVORK5CYIJ=</w:binData> <#--用于声明图片的base64编码,并对其命名 --><v:

利用POI获取Excel中图片和图片位置

利用POI获取Excel中图片和图片位置(支持excel2003or2007多sheet) 转自:http://blog.csdn.net/delongcpp/article/details/8833995 第三方JAR包(apache下载POI即可): poi-3.9-20121203.jar dom4j-1.6.1.jar poi-ooxml-3.9-20121203.jar poi-ooxml-schemas-3.9-20121203.jar poi-scratchpad-3.9-2012

asp.net 开发过程中关于image控件中图片点击后地址乱码的问题

前台页面是这样的: <%-- 图片展示20140705add --%>    <div id="imgShowDiv" style="left:550px; top:90px; height:430px; display:none;" class="msgboxStyle">        <h1 onmousedown="startDrag(this)" onmousemove="dr

Android中图片的处理(放大缩小,去色,转换格式,增加水印等)(转)

Android中图片的处理(放大缩小,去色,转换格式,增加水印等) 原文地址:http://menxu.lofter.com/post/164b9d_3ebf79 package com.teamkn.base.utils; import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.

一个用来提取网页中图片的小工具

public Array MatchHtml(string html,string com) { List<string> urls = new List<string>(); html = html.ToLower(); //获取SRC标签中的URL Regex regexSrc = new Regex("src=\"[^\"]*[(.jpg)(.png)(.gif)(.bmp)(.ico)]\""); foreach(Match

Android 中图片压缩分析(上)

作者: shawnzhao,QQ音乐技术团队一员 一.前言 在 Android 中进行图片压缩是非常常见的开发场景,主要的压缩方法有两种:其一是质量压缩,其二是下采样压缩. 前者是在不改变图片尺寸的情况下,改变图片的存储体积,而后者则是降低图像尺寸,达到相同目的. 由于本文的篇幅问题,分为上下两篇发布. 二.Android 质量压缩逻辑 在Android中,对图片进行质量压缩,通常我们的实现方式如下所示: ByteArrayOutputStream outputStream = new Byte