当前位置: 首页 > 知识库问答 >
问题:

如何在浏览器中渲染二进制图像?

宰父焕
2023-03-14

终端输出

我正在尝试获取存储在mongodb数据库中的图像,以便检索并渲染到浏览器。我已经尝试过一些以前的解决方案,如btoa、Windows。btoa,但它说两者都没有定义。(https://stackoverflow.com/questions/6182315/how-to-do-base64-encoding-in-node-js)(https://stackoverflow.com/questions/23097928/node-js-throws-btoa-is-not-defined-error)

我当前的代码如下所示:

<img src= <%= `data:${event.eventImage.mimetype};base64,` + Buffer.from(`${event.eventImage.file}`, 'binary').toString('base64') %> >

其导致在上面的链接中的输出。二进制中有很多“/”,我认为不应该在那里。我如何正确地转换二进制,使我的图像将呈现?

JSFIDLE

共有1个答案

燕扬
2023-03-14

我最终按照布拉德的建议去做了。在我看来,我写道:

<img src='http://localhost:3000/public/images/<%=event._id %>' >

然后我在Nodejs中创建了一个路由来处理/images/:id。

router.get('/images/:id', function(req,res){
LCEvent.findById(req.params.id)
    .exec()
    .then(doc =>{
        res.send(doc.eventImage.file);
    })
    .catch(err => console.log(err));
})

在我的例子中,我的文档的结构是

{
     eventImage: { 
        file: Binary {...}, 
        filename: 'dreamlifestyle.jpg', 
        mimetype: 'image/jpeg'
    }
}
 类似资料:
  • 前言 接下来的几篇文章,讲一下二面的内容。 二面的内容: 渲染机制 JS 运行机制 页面性能 错误监控 本文接下来讲渲染机制。 渲染机制包括的内容: 什么是DOCTYPE及作用 浏览器渲染过程 面试经常会问:在浏览器中输入url,发生了哪些事情。其中有一部就是浏览器的渲染过程。 Reflow:重排 面试官问完了渲染机制,一般会紧接着问重排Reflow,你可千万别说你没听过。 Repaint:重绘

  • 我正在尝试为mathml呈现SVG。它在chrome上看起来不错,但在IE中,svg的标签有附加属性,我们如何避免添加这些附加属性?请尝试在chrome和IE中将下面的mathml呈现为SVG。您可以看到生成的SVG标记中的差异(两种浏览器中的附加scrrenshots) MathML是:

  • 浏览器的渲染进程到底分为多少线程? 今天查资料有点给我查晕了,我现在知道浏览器应该是有四个进程。 而其中的渲染进程又是由五个小线程组成的。 然后我去查渲染进程流程的时候,又查到主要说法是分为四个或三个小线程:主线程 Main thread , 工作线程 Worker thread(有的文章没说这个),光栅线程 Raster thread 和排版线程 Compositor thread。 流程类似:

  • 问题内容: 调整浏览器窗口大小时,如何让React重新渲染视图? 背景 我有一些块要在页面上单独布局,但是我还希望它们在浏览器窗口更改时更新。最终结果将类似于Ben Holland的 Pinterest布局,但使用React编写的不仅是jQuery。我还有一段路要走。 码 这是我的应用程序: 然后,我有了组件(相当于上面的Pinterest示例中的): 和的清单/集合: 题 我应该添加jQuery

  • 问题内容: 之前曾问过这个问题,但该解决方案不适用于我的情况。我想确保打印某些背景图像,因为它们是页面不可或缺的。(它们不是直接在页面中的图像,因为其中有几个用作CSS精灵。) 关于同一问题的另一种解决方案建议使用,只有在每个图标都有不同的图像且没有CSS精灵时,它才有效。 除了创建带有内联图标的单独页面之外,还有其他解决方案吗? 问题答案: 您对浏览器的打印方法几乎没有控制。您最多可以提出建议,