miniz — fast single-file ZIP implementation in C

I have an unhealthy obsession with one-file implementations of useful things in C, which you can just drop into your project and use without configuring libraries with dozens of files. Miniz is one such project: it is a single 225 KB miniz.c, which contains a zlib replacement plus functions to read/write ZIP files.

Continue reading “miniz — fast single-file ZIP implementation in C”

Minimize PNG files using lossy compression

Unlike JPEG, PNG is a lossless image format, which is why it reproduces pictures perfectly, but makes many of them — mostly photographs — much larger than what you’d get with lossy codecs. PNG is also the only way to get pictures with transparency (alpha channel) display in all browsers, so if we need images with alpha channel, we have to use large PNGs. However, there’s a little trick we can use to make them smaller: by applying lossy preprocessing.

Continue reading “Minimize PNG files using lossy compression”

Optimizing JPEG images with MozJPEG

MozJPEG is a project from Mozilla aimed to improve JPEG compression while keeping full backwards compatibility with current decoders. Recently they released version 3 of the library. Previous version reduced files by 5% on average compared to jpeg-turbo, the JPG compression library it is based on. The new version contains more improvements, such as reducing compression artifacts for text on white background, and better quality for high-resolution images.

Continue reading “Optimizing JPEG images with MozJPEG”