2010-09-04 4 views
12

Je voudrais avoir une compression réversible pour un type de chaîne afin que je puisse l'inclure dans les URL sans garder trace de ce à quoi il se réfère. La chaîne que je voudrais compresser est la chaîne de chemin SVG, voici une courte amorce: http://apike.ca/prog_svg_paths.htmlComment compresser une chaîne?

Fondamentalement, la chaîne contient un caractère, suivi d'un nombre arbitraire d'entiers, puis un autre caractère suivi d'un nombre arbitraire d'entiers et ainsi de suite .

Si quelqu'un connaît une bonne ressource pour cela, il serait très apprécié!

Jason

Répondre

6

De nombreux algorithmes de compression sont bien documentés, un couple a même implémentations js:

  • GZip Une commune (raisonnablement) bon algorithme de compression, je sais qu'il ya un impl JS, je suis juste chasser l'URL

  • LZW un autre point d'interrogation à une mise en œuvre LZW dans JS

  • Arithmetic coding (je l'ai fait, mais le modèle qu'il utilise est stupide donc ne pas atteindre les meilleurs taux de compression), il pourrait

2

Vous pouvez essayer Huffman compression. Le nombre de caractères différents est compris entre 20 et 30, et si la chaîne est longue, la compression devrait être efficace.

2

Il semble que vous puissiez bénéficier de la compression RLE simple et double.

Une amorce sur ce qui peut être vu ici:

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

La bibliothèque doit être suffisamment souple pour modifier votre configuration de compression à quelque chose de plus préférable. L'écriture explique comment cela fonctionne; pourrait être un bon début pour optimiser votre cas SVG.

+0

RLE ne compresse pas du tout les données de chemin SVG. – Phrogz

Questions connexes