- 浏览: 83326 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wzwahl36:
文章很赞!http://www.atool.org/img2b ...
Base64编码的图片在网页中的显示问题的解决 -
mllongze:
haidage 写道小伙,你头像真磕碜。那是我最帅的一张
JAVA实现约瑟夫环 -
haidage:
小伙,你头像真磕碜。
JAVA实现约瑟夫环 -
mllongze:
angelgreen 写道恩 谢谢啊 rpm安装 不用 呵呵 ...
linux下rpm安装时遇到的问题 -
mllongze:
haidage 写道你要干嘛 咋地 没看到嘛 常用的计算符号 ...
常用特殊符号
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 >> & 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 - 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) << + data.charCodeAt(1);
var h = (data.charCodeAt(2) << + 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="data:image/jpeg;base64,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"
class="jsimg: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"
/>
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 >> & 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 - 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) << + data.charCodeAt(1);
var h = (data.charCodeAt(2) << + 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="data:image/jpeg;base64,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"
class="jsimg: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"
/>
- javabase64-1.3.1.zip (64.1 KB)
- 下载次数: 34
发表评论
-
Cross Frame 与不同域进行交互
2011-11-04 11:25 2160为何要用不同网域的 Iframe? 通常较具规模的网站, ... -
数据库连接池技术中dbcp、c3p0、jndi
2011-10-21 16:54 1232不管通过何种持久化技术,都必须通过数据连接访问数据库,在Spr ... -
JAVA实现约瑟夫环
2011-10-12 11:59 934//实现约瑟夫环 public class Josephus ... -
java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher
2011-09-22 12:58 1020使用JSON,在SERVLET或者STRUTS的ACTION中 ... -
六条比较有用的MySQL的SQL语句
2011-09-22 12:08 786本文给大家介绍六条比较有用的MySQL的SQL语句,可能很多人 ... -
linux下rpm安装时遇到的问题
2011-09-22 12:07 1185在Linux下安装rpm包时经常会遇到下面这个问题: ... -
JS 常用经典小技巧==(不断更新)
2011-09-22 12:06 955一、1. X.replace(/\"/g," ... -
ajax提交特殊字符编码转换问题.ishexdigit问题-解决方案
2011-09-22 12:03 2034今天测试密码输入了一串特殊字符后后台出来如下错误: 2010 ... -
JS逻辑运算符&&与||的妙用
2011-09-22 12:01 4721/* 文章写的不错 就此分享 */ &&中第一 ... -
JavaScript学习笔记(一)---Curry化技术/几个页面加载的区别
2011-04-28 17:36 2600Curry化技术是一种通过 ... -
不能使用Hibernate Reverse Engineering生成实体类的原因(转)
2011-04-28 16:00 1182/*取自http://tonysmith.iteye.com/ ... -
web.xml解析
2011-04-28 15:35 1493【1】.web.xml头文件 <?xml version ... -
Myeclipse6.5反编译工具----jadclipse
2011-04-25 16:17 1218一。将解压后的jad.exe文件复制到java\jdk\bin ... -
Hibernate Criteria 学习
2011-04-21 11:04 646/*此文章网上摘录 仅供自己学习使用*/ 设计上可以灵活的 ... -
JQuery的Cookies插件
2011-03-18 16:46 1806在使用jquery.cookies.2.2.0.js的插件时是 ... -
Hibernate 映射文件在不联网的时候 处理DTD方法
2011-03-18 16:16 1295这个问题应该是在做hibernate项目中遇到的比较常见的问题 ... -
DOM 创建 Select 加入Option
2011-03-17 11:19 856(转载....) 注意:Option中的O是要大写的,不然语法 ... -
Hibernate继承分页BUG解决方法之一
2011-03-09 16:08 1039(转载) 今天遇到了一个大问题,hibernate的继承分页b ... -
javascript cookies 存、取、删除实例
2011-03-09 14:51 884(转载 javascript cookies技术 。。。。 ... -
object和embed使用及举例(转载)
2011-03-09 11:21 1153今天看到公司代码里有j ...
相关推荐
在VB(Visual Basic)编程环境中,将本地图片转换为Base64编码是一项常见的任务,尤其在处理网页或网络传输中的图像数据时。Base64是一种用于将二进制数据编码为ASCII字符串的方法,使得这些数据可以在电子邮件等...
生成的Base64字符串可以直接设置为图片源(`<image>` 组件的 `src` 属性),在小程序中显示出来。 此外,理解这个插件的工作原理也很重要。它可能使用了一些二维码编码算法,如QR Code Model 2,将输入的数据编码为...
例如,如果你想将一个图片文件编码为BASE64字符串以便在网页中显示,你可以先读取图片文件的二进制内容,然后调用`Base64Encode`函数,得到的结果就可以直接嵌入到HTML的`<img>`标签的`src`属性中。同样,如果从网络...
总的来说,"图片转base64编码工具 1.0.zip"是一个实用的开发辅助工具,对于需要在网页中直接嵌入图片的开发者来说,它提供了高效且便捷的解决方案。通过这个工具,用户可以轻松地将图片转换为Base64编码,提升网页...
2. HTML和JavaScript:在网页上显示非ASCII字符的图片或数据,可以使用Base64编码嵌入到HTML或CSS中。 3. JSON:某些情况下,Base64编码可以用于在JSON对象中传递二进制数据。 4. 安全性:虽然Base64编码本身并不...
在描述中提到的“base64图片转码工具”是指一种专门用于处理图片的Base64编码软件或在线服务。这种工具通常能够方便地将图片文件转换为Base64字符串,以便于在不支持直接上传图片格式的环境中嵌入和显示图片。例如,...
HTML5 base64图片压缩上传程序是一种利用现代浏览器的特性实现的前端技术方案,它结合了HTML5的新特性,如File API、Canvas以及base64编码,实现了用户在网页上选择图片后,先进行压缩处理,再以base64编码的形式...
在这个资源包中,可能的做法是将图标字体文件转换为Base64编码,然后内联到CSS中,这样图标就可以在单个CSS文件中被加载。 压缩包内的`demo.html`文件通常用于展示如何在实际项目中使用这些资源。通过查看此文件,...
借助Canvas的`toDataURL`方法,我们可以将绘制在Canvas上的图像转换为Base64编码的字符串,这种字符串可以直接嵌入到HTML的`<img>`标签中显示,也可以作为数据提交给服务器。 图片压缩的核心在于Canvas的`drawImage...
这个"图片转Base64 Base64转图片"的工具就是为了解决这类问题而设计的。 首先,让我们详细了解一下图片转Base64的过程。图片本质上是二进制数据,包括像素颜色信息等。当需要将图片转换为Base64格式时,我们会先...
本话题主要聚焦于一个由Delphi编写的ActiveX插件,其核心功能是从剪切板中提取图片并转换为Base64String编码的字符串,以便更方便地在网络应用中传输和存储。 首先,我们来理解Delphi。Delphi是一款强大的Object ...
在JavaScript中,我们可以使用`btoa()`函数对字符串进行Base64编码,`atob()`函数对Base64编码的字符串进行解码。这两个函数都是全局对象的一部分,无需引入额外的库。然而,它们不支持非ASCII字符,因此在处理非...
在IT行业中,图片处理是一项常见的任务,特别是在网页和应用程序中。`Cropper.js`是一个强大的JavaScript库,专门用于图像裁剪。本篇文章将深入探讨如何使用`Cropper.js`进行图片裁剪,并通过Canvas获取Base64编码,...
为了解决这个问题,我们可以先对图片的二进制数据进行Base64编码,然后在`src`属性中使用"data:" URL模式,这样浏览器就能理解并直接解析这个编码后的字符串。 以题目中给出的实例代码为例,首先在JavaScript中,...
在Vue项目中将PDF的base64编码转换为图片显示在界面上是前端开发中较为常见的需求。在本文中,我们探讨了在实现这一功能的过程中可能遇到的问题以及解决方案。核心使用的库是pdf.js,这是一个开源的PDF阅读器,它...
Base64编码把二进制数据转换为由64个可打印字符组成的编码,广泛用于编码图片、视频等文件。 目前,各主流浏览器对于Base64图片的兼容性较好,但不同浏览器的早期版本对Base64图片的支持有差异。在IE9及以上版本的...
为了解决这个问题,可以使用MHTML(MIME-encoded Web Archive)格式来呈现Base64编码的图片。MHTML格式允许在HTML文档中嵌入多个资源,如下所示: ```html <!--Content-Type: multipart/related; boundary=...
本资源提供的解决方案是利用Python编程,将本地图片转换为Base64编码,然后在Markdown中以内联方式嵌入。Base64是一种用于将任意二进制数据转换为ASCII字符串的编码方式,它使得图片可以直接嵌入到HTML或Markdown文...
Base64编码是一种将二进制数据转化为可打印字符的表示方式,常用于在网络上传输图片或者在CSS中嵌入图片。在这个过程中,`canvas.toDataURL`方法起到了关键作用。 首先,我们需要理解`<canvas>`元素,它提供了在...
3. **图像处理**:在网页上显示或通过邮件发送非ASCII字符编码的图片时,通常会用Base64编码。 4. **密码学**:在加密和解密过程中,Base64编码用于将二进制密钥或证书转换为可读格式。 总的来说,`pybase64`库是...