0

问题

在使用Zopfli.min.js压缩/使用pako.js解压缩的过程中,我的整数 2D 数组被分解为全 0 的数组。

故事

在我的 JavaScript 项目中,我想添加一个功能来将我的大型二维数组保存为 JSON 文件的属性。为了压缩数据大小,我尝试使用一些与Zlib. 我使用Zopfli.min.js进行压缩,使用pako.js进行解压缩。

发生了什么

我将二维数组压缩为 zlib 格式并尝试对其进行解压缩。然而,当我检查解压后的二维数组对象的内容时console.log,发现里面的所有值都是0. 数组中的信息在压缩/解压过程中被破坏。

过程细节

big2DArray使用Zopfli.min.js.

   //compression
      /** @type {(Array.<number>|Uint8Array)} */
      const plain = big2DArray;

      /** @type {Zopfli.Deflate} */
      const compressor = new Zopfli.Deflate(plain);

      /** @type {Uint8Array} */
      const compressed = compressor.compress();

  //wrapping
  const obj = {
    big2DArray:compressed,
    someOtherData:"foo"
  }

  //createJSON
  const json = JSON.stringify(obj);

我下载了 JSON 文件,其中的内容如下:

big2DArray:{"0":43,"1":2,"2":19,"3":154,"4":0,"5":24,"6":2,"7":99,"8":1,"9":0,"10":3,"11":84,"12":9,"13":44}

下载 JSON 文件后,我尝试使用以下方法解压缩它pako

        
        const obj = JSON.parse(reader.result);


        //decompressing
        const compressed = obj.big2DArray;
        console.log(`compressed:%o`,compressed)
        //->big2DArray: {"0":43,"1":2,"2":19,"3":154,"4":0,"5":24,"6":2,"7":99,"8":1,"9":0,"10":3,"11":84,"12":9,"13":44}

       // Pako magic
       const decompressed = pako.inflate(compressed);
       console.log(`decompressed:%o`,decompressed);

console.log(decompressed:%o的结果,decompressed);是 601 x 601 大小的 2D 数组,条目为零:

big2DArray:
[[0,0,0,0,0,0,0,0,...],[0,0,0,0,0,0,0,...],...]

怎么了?任何信息,将不胜感激。

4

0 回答 0