LZP3(매우 강력한 알고리즘)을 사용하여 JS의 모든 데이터를 압축합니다.
사용 사례 예
https://pixa.pics/ 프로젝트에서 우리는 사람들이 픽셀 아트를 2d 캔버스에 그릴 수 있도록 합니다. 이미지 소스, 실행 취소/다시 실행을 위한 모든 수정 사항을 저장해야 합니다. 변경...) 및 메타데이터가 있는 썸네일, 압축된 블롭을 브라우저에 자동 저장하고 웹 작업자 내에서 매우 빠르며 UI를 동결하지 않습니다.
압축 벤치마크
다음은 원래 패키지( https://github.com/eladkarako/compressjs-flattened )에 구현된 다양한 알고리즘의 대표적인 속도 및 크기입니다. 시간은 내 랩탑의 노드 0.8.22에 있지만 알고리즘 간 비교에 유효해야 합니다.
텍스트 / 테스트
이것은 WikipediaTaoism 프로젝트에서 생성된 HTML 형식의 Simple English wikipedia 의 Parsoid 문서입니다.
유형
수준
크기(바이트)
압축 시간(들)
압축 해제 시간(초)
bwtc
9
272997
13.10
1.85
bzip2
9
275087
22.57
1.21
lzp3
-
292978
1.73
1.74
ppm
-
297220
42.05
44.04
bzip2
1
341615
22.63
1.40
bwtc
1
345764
12.34
0.80
디엠씨
-
434182
6.97
9.00
lzjbr
9
491476
3.19
1.92
lzjbr
1
523780
2.76
2.02
lzjb
9
706210
1.02
0.30
lzjb
1
758467
0.66
0.29
컨텍스트1
-
939098
5.20
4.69
펜윅
-
1440645
3.06
3.72
mtf
-
1441763
1.92
3.86
허프만
-
1452055
7.15
6.56
단순한
-
1479143
0.72
2.42
데프섬
-
1491107
3.19
1.46
아니요
-
2130648
0.80
0.92
-
-
2130640
-
-
var func = async function(uint8a_or_obj, mode) {return new Promise(function(resolve, reject){
...
if(mode === "COMPRESS_OBJECT") {
// JS -> json_str -> ui8a -> compressed ui8a
resolve(Uint8Array.from(Lzp3.compressFile(new TextEncoder("utf-8").encode(JSON.stringify(uint8a_or_obj, null, 0)))));
}else if(mode === "DECOMPRESS_UINT8A") {
// ui8a decompressed -> ui8a -> json_str -> JS
resolve(JSON.parse(new TextDecoder().decode(Uint8Array.from(Lzp3.decompressFile(uint8a_or_obj)))));
}else {
reject(null);
}
})};
실제 구현: https://github.com/pixa-pics/pixa-pics.github.io/blob/main/src/js/utils/lzp3_json.js
var blob = new Blob([uint8a], {type : "application/octet-stream"}); /* ... */
blob.arrayBuffer().then((array_buffer) => {var uint8a = new Uint8Array(array_buffer); /* ... */ });
Reference
이 문제에 관하여(LZP3(매우 강력한 알고리즘)을 사용하여 JS의 모든 데이터를 압축합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vipertechofficial/compress-any-data-in-js-with-lzp3-very-powerful-algorithm-2a0j텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)