A dart library containing various algorithms for encoding and decoding text and numbers with compression.
You can directly install TurboZip
by adding turbo_zip: ^1.0.1
to your pubspec.yaml dependencies section
You can also add TurboZip
to your project by executing,
- For Flutter Project -
flutter pub add turbo_zip
- For Dart Project -
dart pub add turbo_zip
LZW compresses data by replacing repeated substrings with shorter codes, creating a dictionary dynamically during encoding. It's a lossless method used in GIF Images and Unix File compression.
LZW performs significantly faster then GZip in dart code. Have a look at benchmark results.
Here is how you can use LZW
in your code,
import 'package:turbo_zip/turbo_zip.dart';
final String originalText = "TO BE OR NOT TO BE OR TO BE OR NOT";
final List<int> encodedText = LZW.encode(originalText);
print("Encoded Text : $encodedText");
final String decodedText = LZW.decode(encodedText);
print("Decoded Text: $decodedText");
print(originalText == decodedText); // true
👉 Note: Unicode characters like emojis are currently not supported by
LZW
. Keep in mind to handle exceptions thrown by bothencode
anddecode
functions of LZW in your code.
To benchmark turbo_zip
algorithms against industry leading algorithms, dart scripts are created in
./benchmarks/
. Check them out here.
PR's and Issues are open! If you'd like to improve TurboZip
, please open an issue or an PR with
your suggested changes in this repo. Happy Coding 🤝!