内容简介:http://stackoverflow.com/questions/3709391/node-js-base64-encode-a-downloaded-image-for-use-in-data-uri
使用Node v0.2.0我试图从服务器获取图像,将其转换为base64字符串,然后将其嵌入在图像标签的页面上.我有以下代码:
var express = require('express'), request = require('request'), sys = require('sys'); var app = express.createServer( express.logger(), express.bodyDecoder() ); app.get('/', function(req, res){ if(req.param("url")) { var url = unescape(req.param("url")); request({uri:url}, function (error, response, body) { if (!error && response.statusCode == 200) { var data_uri_prefix = "data:" + response.headers["content-type"] + ";base64,"; var buf = new Buffer(body); var image = buf.toString('base64'); image = data_uri_prefix + image; res.send('<img src="'+image+'"/>'); } }); } }); app.listen(3000);
注意:此代码需要“ express ”和“ request ”.当然, node .如果你安装了npm,它应该是“npm install express”或“npm install request”一样简单.
不幸的是,这不按预期工作.如果我用 Google logo 进行转换,那么我在字符串的开始处得到以下内容:
77+9UE5HDQoaCgAAAA1JSERSAAABEwAAAF8IAwAAAO+/ve+/ve+/vSkAAAMAUExURQBzCw5xGiNmK0t+U++/vQUf77+9BiHvv70WKO+/vQkk77+9D
但是,如果我使用相同图像的在线 Base64 encoder ,那么它的工作原理很好.字符串开始如下:
iVBORw0KGgoAAAANSUhEUgAAARMAAABfCAMAAAD8mtMpAAADAFBMVEUAcwsOcRojZitLflOWBR+aBiGQFiipCSS8DCm1Cya1FiyNKzexKTjDDSrLDS
我在哪里错了,这不正常?我尝试过这么多不同的js base64实现,并且它们都不能以同样的方式工作.我唯一可以想到的是,我试图将错误的东西转换成base64,但是如果是这样的话,应该怎么转换?
的Buffers下面有一个很好的部分.
不幸的是,解决这个问题的最简单的方法是改变请求npm.我不得不添加response.setEncoding(‘binary’);在线缓冲区下方的66行;在/path/to/lib/node/.npm/request/active/package/lib/main.js中.这可以适用于此请求,但不适用于其他请求.你可能想要破解它,以便这只是基于一些其他传递的选项设置.
然后我将var buf = new Buffer(body)改为var buf = new Buffer(body,’binary’);.之后,一切都很好.
另一种方法,如果你真的不想触摸请求npm,将传入一个在ResponseBodyStream参数中实现Writable Stream的对象来请求.然后,该对象将将来自响应的流数据存储在它自己的缓冲区中.也许有一个图书馆已经这样做了…我不知道.
我现在要离开这里,但如果你想让我澄清一下,可以随意评论.
编辑
查看评论. http://gist.github.com/583836 新解决方案
http://stackoverflow.com/questions/3709391/node-js-base64-encode-a-downloaded-image-for-use-in-data-uri
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 深度有趣 | 05 自编码器图像去噪
- 当微信小程序遇上 TensorFlow:接收 base64 编码图像数据
- gThumb 3.11.3 发布,支持下一代图像编码标准 JPEG XL
- 编码、摘要和加密(一)——字节编码
- 新媒体编码时代的技术:编码与传输
- MySQL数据库字符编码总结--数据传输编码
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
CSS禅意花园
[美] Dave Shea、Molly E. Holzschlag / 陈黎夫、山崺颋 / 人民邮电出版社 / 2007-6 / 49.00元
这本书的作者是世界著名的网站设计师,书中的范例来自网站设计领域最著名的网站——CSS Zen Garden(CSS禅意花园)。全书分为两个主要部分。第1章为第一部分,讨论网站“CSS禅意花同”及其最基本的主题,包含正确的标记结构和灵活性规划等。第二部分包括6章,占据了书中的大部分篇幅。 每章剖析“CSS禅意花园”收录的6件设计作品,这些作品围绕一个主要的设计概念展开,如文字的使用等。通过探索......一起来看看 《CSS禅意花园》 这本书的介绍吧!