Javascript 将帧缓冲区转储转换为图像(bmp、png等)

Javascript 将帧缓冲区转储转换为图像(bmp、png等),javascript,html,linux,framebuffer,Javascript,Html,Linux,Framebuffer,我有一个服务器,在那里我使用cat/dev/fb0>fbdump.raw来转储帧缓冲区数据,并将此文件的内容发送到web客户端以显示为屏幕截图。在发布问题之前尝试了很多链接,但是没有一个链接能够帮助在HTML/JS客户端呈现图像 客户端是否需要任何处理,或者是否有JavaScript中的现成API可用于此?如有任何建议,我们将不胜感激。提前谢谢 参考链接: :无法使用它,因为它使用node.js模块 :考虑位图格式的数据 :考虑已采用可读格式的数据 您可以将ImageData(原始RGBA图像

我有一个服务器,在那里我使用
cat/dev/fb0>fbdump.raw来转储帧缓冲区数据,并将此文件的内容发送到web客户端以显示为屏幕截图。在发布问题之前尝试了很多链接,但是没有一个链接能够帮助在HTML/JS客户端呈现图像

客户端是否需要任何处理,或者是否有JavaScript中的现成API可用于此?如有任何建议,我们将不胜感激。提前谢谢

参考链接:

  • :无法使用它,因为它使用node.js模块
  • :考虑位图格式的数据
  • :考虑已采用可读格式的数据

您可以将
ImageData
(原始RGBA图像数据存储在
uint8clampedaray
中)放在画布上

您必须通过交换红色和蓝色将帧缓冲区转储(BGRA)转换为RGBA。 将alpha设置为255(不透明)也是必要的,因为linux帧缓冲区不使用alpha通道,所以它通常为0(透明)

fetch(“fbdump.raw”)//加载转储
.then(response=>response.arrayBuffer())//将响应转换为ArraBuffer
。然后(数组\缓冲区=>{
让canvas=document.querySelector(“canvas”)//获取画布
让ctx=canvas.getContext(“2d”)//获取上下文
让raw_data=new uint8clampedaray(array_buffer)//将ArrayBuffer用作uint8clampedaray以便于访问,ImageData的构造函数需要一个uint8clampedaray
对于(设i=0;i

此代码假定帧缓冲区的分辨率为1920x1080,且采用BGRA像素格式。

请帮助我们提供您查看并发现缺少的堆栈溢出帖子。例如,关于获取字节数组并将其呈现为图像,有很多问题。我猜您需要将原始数据转换为可由浏览器显示的格式(png、jpg等)。没有用于该转换的内置API。谢谢。用上面提到的链接编辑了这个问题。在服务器上使用类似“对不起,我没有回答我自己的问题”这样的方式将帧缓冲区保存为png会更容易,但这正是几天前我所做的。感谢您提供了完整的代码片段。