使用base64在html中嵌入图片

在看wxPython自带的Demo程序时发现,RichEditCtrl控件里编辑的文本可以存储为HTML格式,该HTML文件包含图片,但是该HTML却不像从浏览器中另存为的页面,不带文件夹。它是怎么实现的呢?我观察它的源文件,发现,该图片是以base64的格式包含在html当中的。 该图片在该该网页的格式:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMoAAAB..." />

我觉得这样做的好处是简洁,避免额外的图片附件。但是,它只是形式上的简洁,在内容尺寸上,它并没有减小,反而增加。这是由于base64的原理决定的,大约多三分之一吧。关于base64,请点击链接继续阅读。我这里有个base64.exe(44kb),可供测试。用法是直接

base64.exe FILENAME

或者加上管道符:

base64.exe FILENAME >RESULT.txt

有童鞋反馈,这种方式镶嵌的图片在IE6下不能正常显示。我这里只有ie8.0,并未在ie6.0下测试。有没有人解释一下原理?

我这里还有一个测试网页,请点击测试。源码请右键查看。

No related posts.

2009年1月8日22:07
  • losing
    2009年1月8日02:39 | #1

    我了解的是ie6及以下对png的支持并不好,ie对css的支持就很奇怪,不知道出于什么原因,ie总是对大家都说好的东西说不。
    png分8位与24位两种,前者相当于常见的gif(应该是指非动画gif),24位png令设计师青睐的是它支持阿尔法通道即半透明显示(当然文件字节数也会大幅增加),能够作出很多漂亮的阴影等渐变效果,又不必顾虑其与背景的融合问题。
    ie6及以下版本要显示png图片必须通过其自带的滤镜(应该是借助javascript),所以一定要应用png图片又需要兼顾ff与ie时,在编写样式表的时候就要为两种浏览器各书写一个规则。

    至于更底层的原理我就不知道了,占个沙发抛砖引玉:)

  • 2009年1月8日03:10 | #2

    既然IE6.0对PNG支持不佳,那么JPG如何呢?请看http://zhasm.com/blog/jpg_base64.html的图片是否能够正常显示。

  • 2009年1月9日05:20 | #3

    Goog Works.
    昨天也发现一个PHP的方法把图片变成BASE64编码..
    &lt;?php echo base64_encode(file_get_contents("../images/folder16.gif")) ?&gt;

  • 2009年1月9日05:22 | #4

    呃,刚才那条留言的 &lt; 和 &gt; 分别是 < 和 > ..

发表评论

XHTML: 您可以使用这些标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>