如何通过Node.JS传输输出原始图像?

时间:2011-06-01 09:28:26

标签: javascript image memory node.js

例如;我查看请求URL是否为“/favicon.ico”。我想简单地输出该图像而不需要fs。当然我需要相应地更改内容类型标题,但是如何在JS文件中插入实际图像而不会出现解析错误?

我尝试过最简单的事情:在txt编辑器中打开图像,并将内容粘贴到变量中。我认为将所有文件保存在内存中是有效的,因为它是一个简单的站点。

2 个答案:

答案 0 :(得分:1)

不推荐使用Buffer时使用Buffer.from会收到以下警告

(节点:15707)[DEP0005] DeprecationWarning:由于安全性和可用性问题,不建议使用Buffer()。请改用Buffer.alloc(),Buffer.allocUnsafe()或Buffer.from()方法。

var image1 = Buffer.from(('iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABlSURBVChTjVDJDQAgCGMuB2Iep3EZh0GEqiQekQ8htLSFmGKlXOW/yKCFicsvqeYE8IGsS5gBRk97dV9x2MjrruIsBdo09lCel03LteEFRt7kS3wlmZPRRQ6Zg3YHrxeMpzpAdw2MaCJX2CUsrAAAAABJRU5ErkJggg==', 'base64');
response.writeHead(200, {
    'Content-Length': image1.length,
    'Content-Type': 'image/png'
});
response.end(image1);

答案 1 :(得分:0)

您可以使用data uri在源代码中包含图片。我不太了解Node.JS告诉你如何以编程方式执行它,但是因为你只是将它们存储在变量中,所以应该很容易将图像转换为数据uris并将它们存储在变量中。大多数现代浏览器(和IE8 +)都支持数据uris。如果您搜索“数据uri生成器”,您应该在网上找到大量的数据。

我个人喜欢Firefox的Base64 Encoder扩展程序。这是一种快速便捷的方式,可以在需要时制作数据图像。

<强>更新

经过一番研究后,您可以存储base64编码的字符串,然后将其加载到Buffer并执行以下操作:

var image1 = new Buffer('iVBORw0KGgoAAAANSUhEUgAAABQAAAAHCAIAAACHqfpvAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABlSURBVChTjVDJDQAgCGMuB2Iep3EZh0GEqiQekQ8htLSFmGKlXOW/yKCFicsvqeYE8IGsS5gBRk97dV9x2MjrruIsBdo09lCel03LteEFRt7kS3wlmZPRRQ6Zg3YHrxeMpzpAdw2MaCJX2CUsrAAAAABJRU5ErkJggg==', 'base64');
response.writeHead(200, {
    'Content-Length': image1.length,
    'Content-Type': 'image/png'
});
response.end(image1);

看起来你甚至可以使用带有Buffer的“二进制”编码来复制粘贴的原始数据,但是已经弃用了,所以我坚持使用像base64这样更可靠的东西。