Base64编码的图片在网页中的显示问题的解决

1.为什么要用到BASE64编码的图片信息
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一。Base64 主要不是加密,它主要的用途是把一些二进制数转成普通字符用于网络传输。由于一些二进制字符在传输协议中属于控制字符,不能直接传送需要转换一下。最常见的用途是作为电子邮件或WebService附件的传输编码.
2.base64编码定义
  目前的internet e-mail标准--简单邮件传递协议(smtp)在rfc821中规定了两条重要但不难实现的限制:
1)邮件的内容必须全部为7-比特的美国ascii码。
2)每一行的长度不能超过1000的字符。
因此为了通过smtp用e-mail进行传送,内存的序列化对象必须转化为和以上相容的格式。
rfc1521提供了一个可行的方案。它定义了邮件的内容部分,使之能包涵多种形式的数据。这种标准就是目前众所周知的mime。
  按照rfc1521编码过程为:输入是24个比特,输出是4个字节。24个比特输入组从左至右 由3个8比特的输入组形成。这24个比特被看成4个连续的6比特组,而每个6比特输入组被翻译为base64码表中的一个数字。依次反复不断进行,直到全部输入数据转换完成。
如果最后剩下两个输入数据,在编码结果后加1个“=”;如果最后剩下一个输入数据,编码结果后加2个“=”;如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。
完整的base64定义可见 RFC1421和 RFC2045。编码后的数据比原始数据略长,为原来的4/3。在电子邮件中,根据RFC822规定,每76个字符,还需要加上一个回车换行。可以估算编码后数据长度大约为原长的135.1%。


3.如何进行base64编码
Base64 使用US-ASCII子集的65个字符, 每个字符用6位表示
对于文本串,编码过程如下。例如"men":
先转成US-ASCII值.

"m"十进制 109
"e"十进制 101
"n"十进制 110
二进制 :
m 01101101
e 01100101
n 01101110

三个8位连起来是24位
011011010110010101101110

然后分成4个6位
011011 010110 010101 101110

现在得到4个值,十进制为
27 22 21 46

对应的 Base64 字符是 : b W V u
编码总是基于3个字符,从而产生4个Base64字符。

如果只是2个字符的数据,使用特殊字符"="补齐Base64的4字。
如,编码"me"
01101101 01100101
0110110101100101
011011 010110 0101
111111 (与,补足6位)
011011 010110 010100
b W U
b W U = ("=" 补足4字符)
于是 "bWU=" 就是"me"的Base64值.

如果只是2个字符的数据,如编码 "m"
01101101
011011 01
111111
011011 010000
b Q = =
于是 "bQ==" 就是"m"的Base64值.


4.显示被存储为Base64编码字符串的图片的例子
1)使用data: URI直接在网页中嵌入.
data: URI定义于IETF标准的RFC 2397
data: URI的基本使用格式如下:
data:[<MIME-type>][;base64|charset=some_charset],<data>
mime-type是嵌入数据的mime类型,比如png图片就是image/png。
如果后面跟base64,说明后面的data是采用base64方式进行编码的



这种方法可以将任何文件嵌入到你的网页中,如HTM/HTML,主要代码:'data:text/html;base64,+你的编码'

下面给出MIME-Type 列表(文件类型参照):
123 application/vnd.lotus-1-2-3
3gp video/3gpp
aab application/x-authoware-bin
aam application/x-authoware-map
aas application/x-authoware-seg
ai application/postscript
aif audio/x-aiff
aifc audio/x-aiff
aiff audio/x-aiff
als audio/X-Alpha5
amc application/x-mpeg
ani application/octet-stream
asc text/plain
asd application/astound
asf video/x-ms-asf
asn application/astound
asp application/x-asap
asx video/x-ms-asf
au audio/basic
avb application/octet-stream
avi video/x-msvideo
awb audio/amr-wb
bcpio application/x-bcpio
bin application/octet-stream
bld application/bld
bld2 application/bld2
bmp application/x-MS-bmp
bpk application/octet-stream
bz2 application/x-bzip2
cal image/x-cals
ccn application/x-cnc
cco application/x-cocoa
cdf application/x-netcdf
cgi magnus-internal/cgi
chat application/x-chat
class application/octet-stream
clp application/x-msclip
cmx application/x-cmx
co application/x-cult3d-object
cod image/cis-cod
cpio application/x-cpio
cpt application/mac-compactpro
crd application/x-mscardfile
csh application/x-csh
csm chemical/x-csml
csml chemical/x-csml
css text/css
cur application/octet-stream
dcm x-lml/x-evm
dcr application/x-director
dcx image/x-dcx
dhtml text/html
dir application/x-director
dll application/octet-stream
dmg application/octet-stream
dms application/octet-stream
doc application/msword
dot application/x-dot
dvi application/x-dvi
dwf drawing/x-dwf
dwg application/x-autocad
dxf application/x-autocad
dxr application/x-director
ebk application/x-expandedbook
emb chemical/x-embl-dl-nucleotide
embl chemical/x-embl-dl-nucleotide
eps application/postscript
eri image/x-eri
es audio/echospeech
esl audio/echospeech
etc application/x-earthtime
etx text/x-setext
evm x-lml/x-evm
evy application/x-envoy
exe application/octet-stream
fh4 image/x-freehand
fh5 image/x-freehand
fhc image/x-freehand
fif image/fif
fm application/x-maker
fpx image/x-fpx
fvi video/isivideo
gau chemical/x-gaussian-input
gca application/x-gca-compressed
gdb x-lml/x-gdb
gif image/gif
gps application/x-gps
gtar application/x-gtar
gz application/x-gzip
hdf application/x-hdf
hdm text/x-hdml
hdml text/x-hdml
hlp application/winhlp
hqx application/mac-binhex40
htm text/html
html text/html
hts text/html
ice x-conference/x-cooltalk
ico application/octet-stream
ief image/ief
ifm image/gif
ifs image/ifs
imy audio/melody
ins application/x-NET-Install
ips application/x-ipscript
ipx application/x-ipix
it audio/x-mod
itz audio/x-mod
ivr i-world/i-vrml
j2k image/j2k
jad text/vnd.sun.j2me.app-descriptor
jam application/x-jam
jar application/java-archive
jnlp application/x-java-jnlp-file
jpe image/jpeg
jpeg image/jpeg
jpg image/jpeg
jpz image/jpeg
js application/x-javascript
jwc application/jwc
kjx application/x-kjx
lak x-lml/x-lak
latex application/x-latex
lcc application/fastman
lcl application/x-digitalloca
lcr application/x-digitalloca
lgh application/lgh
lha application/octet-stream
lml x-lml/x-lml
lmlpack x-lml/x-lmlpack
lsf video/x-ms-asf
lsx video/x-ms-asf
lzh application/x-lzh
m13 application/x-msmediaview
m14 application/x-msmediaview
m15 audio/x-mod
m3u audio/x-mpegurl
m3url audio/x-mpegurl
ma1 audio/ma1
ma2 audio/ma2
ma3 audio/ma3
ma5 audio/ma5
man application/x-troff-man
map magnus-internal/imagemap
mbd application/mbedlet
mct application/x-mascot
mdb application/x-msaccess
mdz audio/x-mod
me application/x-troff-me
mel text/x-vmel
mi application/x-mif
mid audio/midi
midi audio/midi
mif application/x-mif
mil image/x-cals
mio audio/x-mio
mmf application/x-skt-lbs
mng video/x-mng
mny application/x-msmoney
moc application/x-mocha
mocha application/x-mocha
mod audio/x-mod
mof application/x-yumekara
mol chemical/x-mdl-molfile
mop chemical/x-mopac-input
mov video/quicktime
movie video/x-sgi-movie
mp2 audio/x-mpeg
mp3 audio/x-mpeg
mp4 video/mp4
mpc application/vnd.mpohun.certificate
mpe video/mpeg
mpeg video/mpeg
mpg video/mpeg
mpg4 video/mp4
mpga audio/mpeg
mpn application/vnd.mophun.application
mpp application/vnd.ms-project
mps application/x-mapserver
mrl text/x-mrml
mrm application/x-mrm
ms application/x-troff-ms
mts application/metastream
mtx application/metastream
mtz application/metastream
mzv application/metastream
nar application/zip
nbmp image/nbmp
nc application/x-netcdf
ndb x-lml/x-ndb
ndwn application/ndwn
nif application/x-nif
nmz application/x-scream
nokia-op-logo image/vnd.nok-oplogo-color
npx application/x-netfpx
nsnd audio/nsnd
nva application/x-neva1
oda application/oda
oom application/x-AtlasMate-Plugin
pac audio/x-pac
pae audio/x-epac
pan application/x-pan
pbm image/x-portable-bitmap
pcx image/x-pcx
pda image/x-pda
pdb chemical/x-pdb
pdf application/pdf
pfr application/font-tdpfr
pgm image/x-portable-graymap
pict image/x-pict
pm application/x-perl
pmd application/x-pmd
png image/png
pnm image/x-portable-anymap
pnz image/png
pot application/vnd.ms-powerpoint
ppm image/x-portable-pixmap
pps application/vnd.ms-powerpoint
ppt application/vnd.ms-powerpoint
pqf application/x-cprplayer
pqi application/cprplayer
prc application/x-prc
proxy application/x-ns-proxy-autoconfig
ps application/postscript
ptlk application/listenup
pub application/x-mspublisher
pvx video/x-pv-pvx
qcp audio/vnd.qcelp
qt video/quicktime
qti image/x-quicktime
qtif image/x-quicktime
r3t text/vnd.rn-realtext3d
ra audio/x-pn-realaudio
ram audio/x-pn-realaudio
rar application/x-rar-compressed
ras image/x-cmu-raster
rdf application/rdf+xml
rf image/vnd.rn-realflash
rgb image/x-rgb
rlf application/x-richlink
rm audio/x-pn-realaudio
rmf audio/x-rmf
rmm audio/x-pn-realaudio
rmvb audio/x-pn-realaudio
rnx application/vnd.rn-realplayer
roff application/x-troff
rp image/vnd.rn-realpix
rpm audio/x-pn-realaudio-plugin
rt text/vnd.rn-realtext
rte x-lml/x-gps
rtf application/rtf
rtg application/metastream
rtx text/richtext
rv video/vnd.rn-realvideo
rwc application/x-rogerwilco
s3m audio/x-mod
s3z audio/x-mod
sca application/x-supercard
scd application/x-msschedule
sdf application/e-score
sea application/x-stuffit
sgm text/x-sgml
sgml text/x-sgml
sh application/x-sh
shar application/x-shar
shtml magnus-internal/parsed-html
shw application/presentations
si6 image/si6
si7 image/vnd.stiwap.sis
si9 image/vnd.lgtwap.sis
sis application/vnd.symbian.install
sit application/x-stuffit
skd application/x-Koan
skm application/x-Koan
skp application/x-Koan
skt application/x-Koan
slc application/x-salsa
smd audio/x-smd
smi application/smil
smil application/smil
smp application/studiom
smz audio/x-smd
snd audio/basic
spc text/x-speech
spl application/futuresplash
spr application/x-sprite
sprite application/x-sprite
spt application/x-spt
src application/x-wais-source
stk application/hyperstudio
stm audio/x-mod
sv4cpio application/x-sv4cpio
sv4crc application/x-sv4crc
svf image/vnd
svg image/svg-xml
svh image/svh
svr x-world/x-svr
swf application/x-shockwave-flash
swfl application/x-shockwave-flash
t application/x-troff
tad application/octet-stream
talk text/x-speech
tar application/x-tar
taz application/x-tar
tbp application/x-timbuktu
tbt application/x-timbuktu
tcl application/x-tcl
tex application/x-tex
texi application/x-texinfo
texinfo application/x-texinfo
tgz application/x-tar
thm application/vnd.eri.thm
tif image/tiff
tiff image/tiff
tki application/x-tkined
tkined application/x-tkined
toc application/toc
toy image/toy
tr application/x-troff
trk x-lml/x-gps
trm application/x-msterminal
tsi audio/tsplayer
tsp application/dsptype
tsv text/tab-separated-values
tsv text/tab-separated-values
ttf application/octet-stream
ttz application/t-time
txt text/plain
ult audio/x-mod
ustar application/x-ustar
uu application/x-uuencode
uue application/x-uuencode
vcd application/x-cdlink
vcf text/x-vcard
vdo video/vdo
vib audio/vib
viv video/vivo
vivo video/vivo
vmd application/vocaltec-media-desc
vmf application/vocaltec-media-file
vmi application/x-dreamcast-vms-info
vms application/x-dreamcast-vms
vox audio/voxware
vqe audio/x-twinvq-plugin
vqf audio/x-twinvq
vql audio/x-twinvq
vre x-world/x-vream
vrml x-world/x-vrml
vrt x-world/x-vrt
vrw x-world/x-vream
vts workbook/formulaone
wav audio/x-wav
wax audio/x-ms-wax
wbmp image/vnd.wap.wbmp
web application/vnd.xara
wi image/wavelet
wis application/x-InstallShield
wm video/x-ms-wm
wma audio/x-ms-wma
wmd application/x-ms-wmd
wmf application/x-msmetafile
wml text/vnd.wap.wml
wmlc application/vnd.wap.wmlc
wmls text/vnd.wap.wmlscript
wmlsc application/vnd.wap.wmlscriptc
wmlscript text/vnd.wap.wmlscript
wmv audio/x-ms-wmv
wmx video/x-ms-wmx
wmz application/x-ms-wmz
wpng image/x-up-wpng
wpt x-lml/x-gps
wri application/x-mswrite
wrl x-world/x-vrml
wrz x-world/x-vrml
ws text/vnd.wap.wmlscript
wsc application/vnd.wap.wmlscriptc
wv video/wavelet
wvx video/x-ms-wvx
wxl application/x-wxl
x-gzip application/x-gzip
xar application/vnd.xara
xbm image/x-xbitmap
xdm application/x-xdma
xdma application/x-xdma
xdw application/vnd.fujixerox.docuworks
xht application/xhtml+xml
xhtm application/xhtml+xml
xhtml application/xhtml+xml
xla application/vnd.ms-excel
xlc application/vnd.ms-excel
xll application/x-excel
xlm application/vnd.ms-excel
xls application/vnd.ms-excel
xlt application/vnd.ms-excel
xlw application/vnd.ms-excel
xm audio/x-mod
xml text/xml
xmz audio/x-mod
xpi application/x-xpinstall
xpm image/x-xpixmap
xsit text/xml
xsl text/xml
xul text/xul
xwd image/x-xwindowdump
xyz chemical/x-pdb
yz1 application/x-yz1
z application/x-compress
zac application/x-zaurus-zac
zip application/zip



Base64编码的字符串与图片的转换 C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;

namespace base64_img
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

//图片 转为 base64编码的文本
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "选择要转换的图片";
dlg.Filter = "Image files (*.jpg;*.bmp;*.gif)|*.jpg*.jpeg;*.gif;*.bmp|AllFiles (*.*)|*.*";
if (DialogResult.OK == dlg.ShowDialog())
{
ImgToBase64String(dlg.FileName);
}
}
//图片 转为 base64编码的文本
private void ImgToBase64String(string Imagefilename)
{
try
{
Bitmap bmp = new Bitmap(Imagefilename);
this.pictureBox1.Image = bmp;
FileStream fs = new FileStream(Imagefilename + ".txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);

MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
ms.Close();
String strbaser64 = Convert.ToBase64String(arr);
sw.Write(strbaser64);

sw.Close();
fs.Close();
MessageBox.Show("转换成功!");
}
catch (Exception ex)
{
MessageBox.Show("ImgToBase64String 转换失败\nException:" + ex.Message);
}
}

//base64编码的文本 转为 图片
private void button2_Click(object sender, EventArgs e)
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "选择要转换的base64编码的文本";
dlg.Filter = "txt files|*.txt";
if (DialogResult.OK == dlg.ShowDialog())
{
Base64StringToImage(dlg.FileName);
}
}
//base64编码的文本 转为 图片
private void Base64StringToImage(string txtFileName)
{
try
{
FileStream ifs = new FileStream(txtFileName, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(ifs);

String inputStr = sr.ReadToEnd();
byte[] arr = Convert.FromBase64String(inputStr);
MemoryStream ms = new MemoryStream(arr);
Bitmap bmp = new Bitmap(ms);

bmp.Save(txtFileName + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
//bmp.Save(txtFileName + ".bmp", ImageFormat.Bmp);
//bmp.Save(txtFileName + ".gif", ImageFormat.Gif);
//bmp.Save(txtFileName + ".png", ImageFormat.Png);
ms.Close();
sr.Close();
ifs.Close();
this.pictureBox1.Image = bmp;
MessageBox.Show("转换成功!");
}
catch (Exception ex)
{
MessageBox.Show("Base64StringToImage 转换失败\nException:"+ex.Message);
}
}
}
}

JS显示base64位编码的图片(2)

<script type="text/javascript">
//<![CDATA[

/*
* jsimgs: embedded images in web pages - decoder - 2006-12-06 ddzoom.net/jsimgs
*
* note: only one instance of this script need go (anywhere) in your web page
*
*/

var timer;

// base64 decoder...

var b64re = '', b2n = [], n2c = [];

function b64init() {
var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
for (var i = 0, a = b64.split(''); i < 64; i++) b2n[a[i]] = i;
for (var i = 0; i < 256; i++) n2c[i] = String.fromCharCode(i);
b64re = new RegExp('[^' + b64 + ']', 'g');
}

function b64decode(s) {
if (!b64re) b64init();
s = s.replace(b64re, '');
if (window.atob) return atob(s); // use fast mozilla builtin
s = s.split('');
var len = s.length, pad = len % 4;
s.push('A','A','A');
for (var i = 0, j = 0, a = []; i < len; ) {
var n = (b2n[s[i++]] << 18) + (b2n[s[i++]] << 12) + (b2n[s[i++]] << 6) + b2n[s[i++]];
a[j++] = n2c[(n >> 16) & 0xff];
a[j++] = n2c[(n >> 8) & 0xff];
a[j++] = n2c[ n & 0xff];
}
if (pad == 2) a.length -= 2;
else if (pad == 3) a.length -= 1;
return a.join('');
}

// huffman decoder...

var c2b = [], bs = '', bsptr = 0;

function bsnum(len) { return parseInt(bs.slice(bsptr, (bsptr += len)), 2); }

function hufinit() {
for (var i = 0; i < 256; i++)
c2b[String.fromCharCode(i)] = ('00000000' + i.toString(2)).slice(-8);
}

function hufdecode(s) {
if (!c2b.length) hufinit();
var a = s.split('');
var c = a.shift().charCodeAt(0);
if (((c >> 3) & 31) != (a.length & 31)) return null; // fails checksum
var lastcharbits = c & 7;
var len = (a.length * 8) - (8 - lastcharbits);
for (var i = 0, n = a.length, b = new Array(n); i < n; i++) b[i] = c2b[a[i]];
bs = b.join(''), bsptr = 0;
var num_paths = bsnum(16), code_size = bsnum(4) + 1, path_size = bsnum(4) + 1;
var map = [], r = [];
for (var i = 0; i < num_paths; i++) {
var code = bsnum(bsnum(code_size) + 1);
var psize = bsnum(path_size) + 1;
var path = bs.slice(bsptr, (bsptr += psize));
map[path] = String.fromCharCode(code);
r[i] = '(' + path + ')';
}
var re = new RegExp(r.join('|'), 'g');
var fn = function(m) { return map[m]; }
return bs.slice(bsptr, len).replace(re, fn);
}

// run length encoded data to html table...

function codes(s) { for (var i = 0, n = s.length, a = []; i < n; i++ ) a[i] = s.charCodeAt(i); return a; } // DEBUG

function d2h(n) { return '' + (n < 16 ? '0' : '') + n.toString(16); }

function rle2table(data, title) {

//timer = new Timer();

var w = (data.charCodeAt(0) << 8) + data.charCodeAt(1);
var h = (data.charCodeAt(2) << 8) + data.charCodeAt(3);
var psize = data.charCodeAt(4), rlind = psize;
for (var i = 0, j = 5, pal = []; i < psize; i++) {
pal[i] = '#' + d2h(data.charCodeAt(j++)) + d2h(data.charCodeAt(j++)) + d2h(data.charCodeAt(j++));
//if (i == tc) pal[i] = 'transparent'; // FIXME ie6 uses current color
}

var imgdata = data.slice(j);
var re = new RegExp('\\x' + d2h(rlind) + '([\\x00-\\x' + d2h(psize - 1) + '])([\\x02-\\xff])', 'g');
var fn = function(m, chr, count) {
for (var i = 0, n = count.charCodeAt(0), s = ''; i < n; i++) s += '' + chr;
return s;
};
data = imgdata.replace(re, fn); //alert([data.length, w, h, tc, j, '\n', pal, '\n', codes(data)])

//data = data.split('');
data = codes(data);

// non-dom...
var html = [], i = 0;
html[i++] = '<table cellspacing="0" cellpadding="0" title="' + title + '" style="display:inline;">';
for (var y = 0, c = 0, i = 1; y < h; y++) {
html[i++] = '<tr style="height:1px">';
for (var x = 0; x < w; x++) { // TIGHT LOOP
html[i++] = '<td style="width:1px;background:';
html[i++] = pal[data[c++]];
html[i++] = '"> <\/td>';
}
html[i++] = '<\/tr>';
}
html[i++] = '<\/table>';
var span = document.createElement('span');
if (window.opera) span.style.verticalAlign = h + 'px'; // FIXME
span.innerHTML = html.join('');
return span;
}

//function Timer() {
// this.t = new Date(); this.toString = function() { return (new Date()) - this.t; };
//}

function render_jsimgs() {
//timer = new Timer();
for (var i = 0, n = document.images.length, imgs = []; i < n; i++) {
imgs[i] = document.images[i]; // save
imgs[i].title = imgs[i].getAttribute('alt') || imgs[i].title || 'embedded image';
}
for (var i = 0, m; i < n; i++)
if ((!imgs[i].complete || !imgs[i].src) && (m = imgs[i].className.match(/^jsimg:(.+)/)) !== null)
imgs[i].parentNode.replaceChild(rle2table(hufdecode(b64decode(m[1])), imgs[i].title), imgs[i]);
// var e = document.getElementById('timer'); if (e) e.innerHTML = timer;
}

window.addEventListener ? window.addEventListener('load', render_jsimgs, false) : window.attachEvent ? window.attachEvent('onload', render_jsimgs) : null;

//]]>
</script>

<noscript>to view this page, please use a javascript-enabled browser</noscript>

<!-- COPY + PASTE THIS SOURCE CODE INTO YOUR HTML FILE... -->

<img width="330" height="171" alt="embedded image"
src="https://img-blog.csdnimg.cn/2022010612400414271.jpeg"
class="jsimg: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"
/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值