2012-02-25 64 views
0

假设我需要调用一个RPC HTTP api,它要求客户端使用HTTP POST(可能带有文件)uri,并且成功会导致“Content-Type:image/PNG“二进制。有没有什么办法可以在html/js中做到这一点,并将png插入到HTML文档中?或者我需要提供支持HTTP GET的代理服务?在通过HTTP POST获取的html中插入<img>

回答

0

这里有一个答案,看起来像它会帮助你。我不知道这种解决方案我自己,而是为你做一些研究:

http://blog.calyptus.eu/tags/binary-javascript/

如果你看看源代码,你可以看到你从API响应得到如何显示的base64数据的示例(这里传递给show()的参数)

function show(data){ 
var png = new PNG(data); 
var img = document.getElementById('image'), limg = document.getElementById('largeimage'); 
document.getElementById('nativeimage').src = 'data:image/png;base64,' + data; 

img.innerHTML = ''; 
limg.innerHTML = ''; 
img.style.width = png.width + 'px'; 
img.style.height = png.height + 'px'; 

limg.style.width = (png.width * 3) + 'px'; 
limg.style.width = (png.height * 3) + 'px'; 

var line; 
while(line = png.readLine()) 
{ 
    for (var x = 0; x < line.length; x++){ 
     var px = document.createElement('div'), px2 = document.createElement('div'); 
     px.className = px2.className = 'pixel'; 
     px.style.backgroundColor = px2.style.backgroundColor = '#' + line[x].toString(16).padRight('0', 6); 
     img.appendChild(px); 
     limg.appendChild(px2); 
    } 
} 

这可能是一个很好的实验起点。他的例子看起来正是你想要做的

+0

哇,那家伙实际上用Javascript写了一个png渲染器。这是惊人的。但是,服务器将发送二进制PNG,而不是base64编码。此外,我非常怀疑这将很好地扩展和与CSS等工作很好希望有一个更简单的解决方案:-) – Jeroen 2012-02-25 05:44:48