代码之家  ›  专栏  ›  技术社区  ›  Richard Inglis

如何在HTML文件中编码图像数据?

  •  7
  • Richard Inglis  · 技术社区  · 15 年前

    我想能够输出一个HTML文件,其中包括一个图像(在文件本身)。通过谷歌搜索,我找到了几种方法:

    • javascript:imageData
    • 数据URI,如 <IMG SRC="data:image/gif;base64,[...]">
    • <object ... > 标记(尽管它使用数据URI,但可能继承相同的限制)

    但我不知道哪种浏览器更好地支持,或者是否还有其他的选择。

    有实践经验的人能给我建议吗?谢谢。

    4 回复  |  直到 15 年前
        1
  •  8
  •   jball    15 年前

    关于浏览器支持,从 Wikipedia :

    数据URI当前受支持 以下Web浏览器:

    • Gecko及其衍生产品,如Mozilla Firefox
    • 歌剧
    • kde,通过kio输入/输出系统。这允许kde浏览器konkeror支持数据URI。
    • Safari;虽然Safari的渲染引擎WebKit是Konquerror的khtml引擎的衍生产品,但Mac OS X不共享kio从系统架构,因此不共享实现。
    • iPhone的Safari;
    • 谷歌浏览器
    • 由于安全原因,Internet Explorer 8;Microsoft对某些“不可导航”内容(如标签和CSS规则)的支持有限,包括担心嵌入数据URI中的javascript可能无法由脚本过滤器(如基于Web的电子邮件客户端使用的脚本过滤器)解释。数据URI必须小于32K。
    • world browser;是一个IE shell浏览器,它内置了对数据URI方案的支持。

    IE不处理 <object> 正确标记,请参见 here 了解更多详细信息。简而言之,您不能信任IE显示它的图像。

    这个 javascript:imageData 也不太受支持,因为它在许多跨站点脚本攻击中使用。

    有很多关于 this web 他们都得出了这样的结论:没有一种好的通用方法来嵌入图像。如果您只需要支持浏览器的一个子集,那么数据URI可以工作,或者数据URI和JavaScript的组合也可以工作。

        2
  •  1
  •   jspcal    15 年前

    ImageData更为灵活,例如某些IE将数据URI限制为32K。

        3
  •  1
  •   Quentin    15 年前

    除了在版本8之前的Internet Explorer中,数据URI方案得到了合理的支持。

    我认为JavascriptURI的支持稍微好一点,但如果JS不可用,则会失败。

    你能做的最好的事情就是坚持使用外部图像资源。

        4
  •  0
  •   hobodave    15 年前

    数据URI在<ie8中不起作用。IE8最多支持32kb。