Javascript - 选择啥文件类型来保存像素数据?

Posted

技术标签:

【中文标题】Javascript - 选择啥文件类型来保存像素数据?【英文标题】:Javascript - what files type choose to save pixels data?Javascript - 选择什么文件类型来保存像素数据? 【发布时间】:2015-08-13 08:25:37 【问题描述】:

如何在javascript中保存(最小文件大小)像素数据?

现在我正在使用 JSON,它看起来像这样:

 "SIZE":[120,120],
  "FRAME":["SHINE",""],
  "LEDS":[
       "X":0,"Y":0,"R":16,"G":30,"B":58,
       "X":1,"Y":0,"R":13,"G":23,"B":43,
       "X":2,"Y":0,"R":14,"G":26,"B":50,
  etc...

所以对于像 16x16、90x32 这样的小图片,文件大小还可以,但现在我需要做 120x120 的图片,文件大小约为 500kb。有没有更好的解决方案?

【问题讨论】:

您的数据是否创造了连贯的空间?您是否定义了所有像素 (120x120)? 没有。我定义了所有像素。 【参考方案1】:

您几乎没有选择以最小尺寸发送像素数据。最简单的方法是将所有这些像素信息打包到一个二进制数据中。

    MIME 类型

您可以使用 image/bmp MIME 类型通过 http 请求发送图像数据。您可以查看https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data 以查看如何读取此类数据

var oReq = new XMLHttpRequest();
oReq.open("GET", "/myfile.png", true);
oReq.responseType = "arraybuffer";

oReq.onload = function (oEvent) 
  var arrayBuffer = oReq.response; // Note: not oReq.responseText
  if (arrayBuffer) 
    var byteArray = new Uint8Array(arrayBuffer);
    for (var i = 0; i < byteArray.byteLength; i++) 
      // do something with each byte in the array
    
  
;

oReq.send(null);
    转换为二进制并作为 BASE64 发送

您可以将像素数据转换为二进制格式(类似于纯 BMP),然后使用BASE64 算法用字母表示。然后你可以用普通的 JSON 发送它

这是关于将复杂结构打包成二进制的很好的解释:http://danthedev.com/2015/07/25/binary-in-javascript/

【讨论】:

是的,我做了,要检查两者。谢谢。

以上是关于Javascript - 选择啥文件类型来保存像素数据?的主要内容,如果未能解决你的问题,请参考以下文章

有啥方法可以在不使用 getImageData() 的情况下在 JavaScript 中找到像素的颜色?

使用 PHP GD 调整图像大小并保存图像。这段代码有啥问题?

我应该使用啥类型的数据结构来保存表行?

.js是啥文件格式

有啥方法可以更改电子文件对话框的标题和保存类型?

catia啥格式最小