0
假设我需要调用一个RPC HTTP api,它要求客户端使用HTTP POST(可能带有文件)uri,并且成功会导致“Content-Type:image/PNG“二进制。有没有什么办法可以在html/js中做到这一点,并将png插入到HTML文档中?或者我需要提供支持HTTP GET的代理服务?在通过HTTP POST获取的html中插入<img>
假设我需要调用一个RPC HTTP api,它要求客户端使用HTTP POST(可能带有文件)uri,并且成功会导致“Content-Type:image/PNG“二进制。有没有什么办法可以在html/js中做到这一点,并将png插入到HTML文档中?或者我需要提供支持HTTP GET的代理服务?在通过HTTP POST获取的html中插入<img>
这里有一个答案,看起来像它会帮助你。我不知道这种解决方案我自己,而是为你做一些研究:
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);
}
}
这可能是一个很好的实验起点。他的例子看起来正是你想要做的
哇,那家伙实际上用Javascript写了一个png渲染器。这是惊人的。但是,服务器将发送二进制PNG,而不是base64编码。此外,我非常怀疑这将很好地扩展和与CSS等工作很好希望有一个更简单的解决方案:-) – Jeroen 2012-02-25 05:44:48