나는 processingjs를 통해 페인트 브러시 응용 프로그램을 개발하려고합니다. 이 API에는 배열에 RGB 값을로드하는 loadPixels() 함수가 있습니다. 이제 배열을 서버 db에 저장하려고합니다.자바 스크립트 클라이언트 - 데이터 압축
문제는 배열의 크기입니다. 문자열로 변환 할 때 크기는 5MB입니다.
최상의 해결책은 자바 스크립트 수준에서 압축을 수행하는 것입니까? 그것을하는 방법?
나는 processingjs를 통해 페인트 브러시 응용 프로그램을 개발하려고합니다. 이 API에는 배열에 RGB 값을로드하는 loadPixels() 함수가 있습니다. 이제 배열을 서버 db에 저장하려고합니다.자바 스크립트 클라이언트 - 데이터 압축
문제는 배열의 크기입니다. 문자열로 변환 할 때 크기는 5MB입니다.
최상의 해결책은 자바 스크립트 수준에서 압축을 수행하는 것입니까? 그것을하는 방법?
LZW 압축 예는 http://rosettacode.org/wiki/LZW_compression#JavaScript을 참조하십시오. 반복되는 패턴을 가진 긴 문자열에서 가장 잘 작동합니다. 사전 적은 분명히 제외하고는 단일 문자열이 가능한 모든 입력 문자에 해당하는 (그리고 아무것도 를 포함하고 을 경우 코드를 중지 초기화
: LZW에 Wikipedia article에서
그들은 사용되고있다). 알고리즘 은 문자열을 검색하여 더 이상 문자열을 찾은 다음 이 사전에 없으면 하위 문자열을 찾습니다. 이러한 문자열이 발견되면 문자열 덜 마지막 문자의 인덱스 (즉, 사전에 가장 긴 문자열)을 (를 포함하여 사전에서 검색 및 출력으로 전송하고, 새로운 문자열 마지막으로 문자)가 다음 사용 가능한 코드로 사전 에 추가됩니다. 마지막으로 입력 문자는 하위 문자열을 스캔 할 다음 시작 지점으로 으로 사용됩니다. 이와
연속적 이상 문자열은 사전에 등록 된 하나의 값으로 출력 후속 부호화 가능하게된다. 이 알고리즘은 반복 패턴이있는 데이터에서 가장 잘 작동하므로 메시지의 처음 부분에 부분에 압축이 거의 표시되지 않습니다. 그러나 메시지 이 커짐에 따라 압축 비율 은 최대로 까지 점근합니다.
JavaScript implementation of Gzip에는 몇 가지 답변이 있습니다.
또한 Javascript LZW 및 Huffman Coding with PHP and JavaScript은 내가 발견 한 다른 구현입니다.
내 경우에는 이것이 실제 크기 – Soft
의 33 %로 줄어 들었습니다. 기쁜 데 도움이되었습니다. –
특정 구현에서는이 구현이 작동하지 않습니다. HTML의 큰 덩어리를 인코딩했는데 제대로 디코딩하지 못했습니다. Null을 반환합니다. 대신이 구현을 사용하십시오. https://gist.github.com/revolunet/843889 – shrimpwagon