Tekst encoder/compressor

Door Toby hinloopen, 13 jaar geleden, 3.205x bekeken

Ik verveelde me, dus ik dacht: laat ik eens een tekst-compressor maken.

Deze compressor is gemaakt voor opslag van teksten. Dit is de 1e versie die ik werkt en enige compressie heeft.

De compressor is gemaakt voor zo hoog mogelijke besparing van ruimte waarbij het belangerijk blijft om het uitpakken van de tekst zo snel mogelijk te laten gaan.

De encoder zet iedere tekst om in een BINAIRE CODE met een onbepaalde grootte, de decoder zet deze uiteraard weer om in tekst.

De huidige versie is enigsinds inefficient met inpakken, maar uitpakken gaat al aardig snel. (ik heb een lange tijd besteed in het aanpassen van zowel de encoder als decoder voor snelle decode-sessies)

Ik heb deze encoder/decoder gemaakt voor de lol en ik zou verder niet echt direct een nuttige functie kunnen bedenken.

Je zou em eventueel kunnen gebruiken voor een zelfgemaakte database die gebaseert is op text-files of gewoon in de database gooien als ...BLOB. (Binairy Large OBject)

EXTRA:
in de array '$translationtable' staat de array met de vertalings-tabellen. Je kan op basis ban de comments die erboven staan een poging doen om zelf tabellen toe te voegen of te wijzigen om zo, mogelijk, de encoding/decoding speed/ratio te verhogen.

Die tabellen bepalen namelijk een groot deel van de encoding-kwaliteit.

UPDATES:
nog geen

komende updates:
-encoding met wachtwoord beveiliging
-javascript decoder
-natuurlijk performance en compression-ratio verbeteringen

Voorbeeld: http://www.levensweg.net/livC/

Gesponsorde koppelingen

PHP script bestanden

  1. tekst-encodercompressor

 

Er zijn 17 reacties op 'Tekst encodercompressor'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Storeman storeman
storeman storeman
13 jaar geleden
 
0 +1 -0 -1
Heb je al eens gekeken naar Huffen, dit qua compressie werkt deze een stuk efficienter. Huffen doet ongeveer 67% op een stuk tekst, terwijl jou script 90% doet. Toegegeven, jou script is wel een stuk sneller, maar dan heb je een fixed-table. Als je huffen met een fixed-table zou toepassen, zou deze wellicht ook sneller kunnen zijn (compressie wordt dan wel weer lager).

Desalniettemin, leuk om de verveling door te komen ;).
Lode
Lode
13 jaar geleden
 
0 +1 -0 -1
Op zich leuk, maar waarom in php4 ?


13 jaar geleden
 
0 +1 -0 -1
"PHP versie: 5+"
Dat is dit niet echt...
Toby hinloopen
toby hinloopen
13 jaar geleden
 
0 +1 -0 -1
@chris: hij werkt niet op PHP4 :P
dus heb er maar 5 van gemaakt.

@storeman: ik zal een kijke naar dat huffen. De compressie-resultaten zullen ook wel verbeteren, ik ga die tabellen nog verbetere en wat extra besparingen erbij gooien hier-en-daar.

dat huffen ziet er ook wel interessant uit.
deze encoder, zoals jij al opmerktte, is sneller maar behaald mindere goede compressieresultaten. Daar is deze ook voor gemaakt: vooral decoden moet supersnel gaan. Encoden mag 'een eeuw' duren, zolang decoden maar supersnel gaat.


13 jaar geleden
 
0 +1 -0 -1
@Toby: Waarom maak je je class dan niet gewoon PHP5? ;-)
Toby hinloopen
toby hinloopen
13 jaar geleden
 
0 +1 -0 -1
hoe maak je een class php5? wat is het verschil? :P
heb je andere soorten classes ofzo?
Toby hinloopen
toby hinloopen
13 jaar geleden
 
0 +1 -0 -1
@chris:
van die officiele PHP site snap ik er nog niet veel van :P
ik ga ff googlen.

ik had het al eerder gezien met die 'public function __....()' en vroeg me al af wat het was.


13 jaar geleden
 
Toby hinloopen
toby hinloopen
13 jaar geleden
 
0 +1 -0 -1
was al aan't googlen :P
Toby hinloopen
toby hinloopen
13 jaar geleden
 
0 +1 -0 -1
ik heb die huffenencoder ernaast gegooit en ik hoef iig niet bang te zijn voor concurrentie.

hij is traag 40x zo traag en behaald slechte compressie kwaliteit.
tevens houdt ie van errors.

'Warning: array_multisort() [function.array-multisort]: Argument #1 is expected to be an array or a sort flag in C:\xampp\htdocs\http\livc\huffen.php on line 318

Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\http\livc\huffen.php on line 319'

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
INPUT STRING SIZE:   165 bytes
LIVC
    ENCODED STRING SIZE: 113.75 bytes
    DECODED STRING SIZE: 165 bytes
    ENCODER VERSION:     2
    DECODE BIN VERSION:  2
    COMPRESSION RATIO:   68.9 %
    COMPRESSION STATUS:  SUCCES
    ENCODING TIME:       1.264 ms
    DECODING TIME:       0.364 ms
HUFFEN
    ENCODED STRING SIZE: 184 bytes
    DECODED STRING SIZE: 165 bytes
    COMPRESSION RATIO:   111.5 %
    COMPRESSION STATUS:  SUCCES
    ENCODING TIME:       44.108 ms
    DECODING TIME:       4.051 ms


input:
'aangezien je 13 jaar bent en te oud... hoef ik de filmpjes niet te hebben... heb je mischien filmpjes van jou van 5 jaar geleden of een jonger broertje of zusje :gay'

een klein berichtje uit een forum. Ik ga nog wel ff meerdere tests draaien.

als ik de laatste bug uit LivC decoder met nieuwe tabellen/opties dan gooi ik die ook online, samen met vergelijking met HUFFEN.
Onbekend Onbekend
Onbekend Onbekend
13 jaar geleden
 
0 +1 -0 -1
Lol, moet je is in FF doen met een tekst van 150 KB, men geheugen zat bij FF voor 2,3 GB vol :P
Toby hinloopen
toby hinloopen
13 jaar geleden
 
0 +1 -0 -1
wow, is 1x niet genoeg?

behalve dat: 150KB is veel voor FF :P dan moet je debug uitzette, dan wordt het iets minder :P

en waarschijnlijk heb jij FF2 met enkele plugins...

FF is goed in geheugen vrete :P
Teun Beijers
Teun Beijers
13 jaar geleden
 
0 +1 -0 -1
Ik heb het getest met bestanden, dat werkt niet, maakt ze aantal malen groter :P
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
include('livc.php');
$myFile = "plaatje.jpg";
$newfile = rand(1,1000).'.aaa';
$sizestart = filesize($myFile);
echo $sizestart;
$livc = new livc;
$contents = file_get_contents($myFile);
$fh = fopen($newfile, 'x');
$coded = $livc->livc_encode($contents);
fwrite($fh,$coded);
fclose($fh);
echo '-'.filesize($newfile);
?>

En ook met .txt bestanden heb ik weinig geluk :(
Toby hinloopen
toby hinloopen
13 jaar geleden
 
0 +1 -0 -1
T-E-K-S-T encoder :P
geen plaatjes encoder :P


je moet er plain tekst mee encoden voor de beste resultaten, zoals forum- en chatberichten of langere artikelen.
Teun Beijers
Teun Beijers
13 jaar geleden
 
0 +1 -0 -1
Quote:
En ook met .txt bestanden heb ik weinig geluk :(

.txt is toch puur tekst, of heb ik het fout?
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Toby hinloopen
toby hinloopen
13 jaar geleden
 
0 +1 -0 -1
@teuneboon: ligt eraan wat je erin plakt. :P

.txt is een extensie. Als ik .jpg hernoem naar .txt heb ik een .txt bestand met allemaal binaire codes erin en NUL-tekens. Daar is de encoder niet voor gemaakt. De encoder is gemaakt voor westerse tekst met letters van a tot z en cijfers van 0 tot 9, spaties en veelgebruikte leestekens als [punt] en [komma]

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. tekst-encodercompressor

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.