【问题标题】:Javascript Hex String to ImageJavascript十六进制字符串到图像
【发布时间】:2011-03-01 22:11:29
【问题描述】:

我会直奔主题。现在我正在开发一个基于 Web 的应用程序。它具有提供 XML 文档的基于 PHP REST 的体系结构。在这些文档中,许多属性都是十六进制编码的图片字符串。

在客户端,jQuery AJAX 获取包含图片的 XML 文档。我需要在一些 标签中显示所述图片。但是我对这些方法缺乏了解,所以我在这里寻求帮助。

目标: 十六进制或 base64 格式的 JavaScript 字符串变量 >>> HTML 显示的图像。

需要跨浏览器,或者对不支持它的浏览器进行 hack。

谢谢, 贡纳尔

【问题讨论】:

标签: javascript ajax string image hex


【解决方案1】:

使用 base64 对图像进行编码,并将它们以 CDATA 字符串的形式写入您的 XML,格式如下:

data:[<MIME-type>][;charset="<encoding>"][;base64],0123456789abcdefg...

在构建文档时,将此字符串用作您的src

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

【讨论】:

  • 确实如此。它可能在某些应用程序中不起作用,但 Web 应用程序应该没有问题。试一试。非常容易实现。
  • 确定 IE 支持“data:”网址吗?我读到的所有内容都表明 IE 支持的东西有点相似,但绝对不同。
  • 感谢您的快速回复。我已经尝试过你的建议,因为它最符合我的想法,但我的实现无法正常工作,你能找出我的错误吗? var hexString = "FFD8FFE000104A..."; document.getElementById("output").innerHTML = "图片:"
  • 我还应该澄清一下,跨浏览器是指最新版本。由于我的用户群的性质,我有能力保证他们拥有这样的软件。
  • 亲爱的@Andrew,请看我的问题:stackoverflow.com/questions/34963963/…
【解决方案2】:

是否可以仅使用 php 文件来渲染图像?该 php 文件可以通过

写入一些 base64 编码值
echo base64_decode($_GET['data']); 

当你嵌入像

这样的图像时
<img src="http://host/yourPhpFileForDecode.php?data=base64encoded.../>

【讨论】:

  • 响应头是否还需要指明图像的格式? (例如 gif、jpg、png)
  • 还请记住,URL 长度限制在 ~2KB .. 所以你可以通过 URL 传递的内容有很大的限制..
  • 我想是的,是的。但是您也可以通过 GET 将它传递给 php 文件并动态设置它。
  • @Gaby:你是对的。为了使这个解决方案更加复杂(我很确定,没有简单的解决方案,因为“数据:”方式不适用于 ie
  • 确实这样更可行。听起来是个有趣的概念:)
猜你喜欢
  • 1970-01-01
  • 2014-03-07
  • 2010-10-04
  • 1970-01-01
  • 2014-10-29
  • 2012-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多