2010-09-04 16 views
12

Me gustaría tener una compresión reversible para un tipo de cadena para que pueda incluirla en las URL sin hacer un seguimiento de a qué se refiere. La cadena que me gustaría comprimir es la cadena de ruta SVG, aquí hay una breve introducción: http://apike.ca/prog_svg_paths.htmlCómo comprimir una cadena?

Básicamente, la cadena contiene un carácter, seguido de un número arbitrario de enteros, luego otro carácter seguido de un número arbitrario de enteros, etc. .

¡Si alguien sabe de un buen recurso para esto, sería muy apreciado!

Jason

Respuesta

6

Muchos algoritmos de compresión están bien documentados, un par siquiera tiene js implementaciones:

  • GZip A (razonablemente) buen algoritmo de compresión común, sé que hay un impl JS, soy acaba de cazar la URL

  • LZW Otra cuestión apunta a una implementación de LZW en JS

  • Arithmetic coding (lo hice, pero el modelo que utiliza es estúpida por lo que no consigue las mejores tasas de compresión que podría)

2

Usted podría intentar Huffman compression. El número de caracteres diferentes es 20-30, y si la cadena es larga, la compresión debería ser efectiva.

2

Parece que podría beneficiarse de la compresión RLE simple y doble.

Una introducción a esto se puede ver aquí:

http://pp19dd.com/2011/10/query-string-limits-encoding-hundreds-of-checkboxes-with-rle/#demo

La biblioteca debe ser lo suficientemente flexible para modificar su patrón de compresión a algo más preferible. La descripción explica cómo funciona esto; podría ser un buen comienzo para optimizar su caso de SVG.

+0

RLE no comprimirá los datos de la ruta SVG muy bien. – Phrogz

Cuestiones relacionadas