I've been steadily working on my free wavelet image compression library for the past few weeks, and in the process have improved it in many ways. These are largely not technical improvements, but rather a huge code refactoring, the creation of decent documentation, reducing memory usage an so on.
You can read the freshly pressed documentation or simply download the source.
It is a fairly simple but thus compact (executable with compression and decompressing is 30kb uncompressed) and relatively speedy image compression library, that provides up to 16 channels per file and combines lossless with lossy compression in a single algorithm, that can even be changed from channel to channel. As it's based on the wavelet transform, it allows for progressive decoding (which means that if you only have the beginning of the file, you get a lower quality version of the whole file) and can also extract smaller "thumbnails" of the original image.
For encoding it also support various modes, one is to give a mean-square error for each channel (similar to the JPEG quality setting), and another one is to fit the best quality image into a given amount of bits.
Unfortunately, there is a catch with the new version, too (and this is the download link to the old version is still live). As my primary development platform has moved from Windows to Mac OS (and Linux), I have neither updated the Windows GUI (written in Delphi) nor the Web-Browser plugin. I plan to offer new GUIs eventually; the current plan is to write one in C# for Windows and Linux, and do a native Cocoa one for Mac OS.
Finally, I've changed the license from the GPL to the zlib-license, which should allow use in closed source applications. If you decide to use it, or even decide not to use it, feedback and suggestions would be much appreciated.
What would you use it for?
- On-disk storage (or even in memory and decompressed on demand) for streaming worlds if you really want to fit your Xbox 360 game on a single DVD, as it provides a much lower bit-rate than DXTC (but then, you cannot use immediately as a texture) .
- Fitting you save-game screen-shot into a fixed amount of space.
- Allowing progressive download of images / textures.
- Efficiently storing HDR-textures (by making wv_pel into an int instead of a short int).
You can read the freshly pressed documentation or simply download the source.
It is a fairly simple but thus compact (executable with compression and decompressing is 30kb uncompressed) and relatively speedy image compression library, that provides up to 16 channels per file and combines lossless with lossy compression in a single algorithm, that can even be changed from channel to channel. As it's based on the wavelet transform, it allows for progressive decoding (which means that if you only have the beginning of the file, you get a lower quality version of the whole file) and can also extract smaller "thumbnails" of the original image.
For encoding it also support various modes, one is to give a mean-square error for each channel (similar to the JPEG quality setting), and another one is to fit the best quality image into a given amount of bits.
Unfortunately, there is a catch with the new version, too (and this is the download link to the old version is still live). As my primary development platform has moved from Windows to Mac OS (and Linux), I have neither updated the Windows GUI (written in Delphi) nor the Web-Browser plugin. I plan to offer new GUIs eventually; the current plan is to write one in C# for Windows and Linux, and do a native Cocoa one for Mac OS.
Finally, I've changed the license from the GPL to the zlib-license, which should allow use in closed source applications. If you decide to use it, or even decide not to use it, feedback and suggestions would be much appreciated.
What would you use it for?
- On-disk storage (or even in memory and decompressed on demand) for streaming worlds if you really want to fit your Xbox 360 game on a single DVD, as it provides a much lower bit-rate than DXTC (but then, you cannot use immediately as a texture) .
- Fitting you save-game screen-shot into a fixed amount of space.
- Allowing progressive download of images / textures.
- Efficiently storing HDR-textures (by making wv_pel into an int instead of a short int).
Last edited by a moderator: