Repository navigation
0.1.0
Release Notes
The first release. Everything below is new.
Features
- cli: the
sqzerbinary, ADR-0003: one flat command,-ffor one or several output formats, a perceptual target by default,-t,-q,--lossless,--preset(web,thumbnail,archive,lossless) and--fastto change it,-efor effort - cli: codec-specific options through
-x codec:key=valueonly, checked against the backend before any file is touched.--list-codecsand--list-codecs -vprint every backend in the build, its options and defaults, and which metadata it can carry - cli: output placement: a sibling file by default,
-ofile or directory,--suffix,--templatewith{stem} {ext} {width} {height} {format} {quality} {dir} {name},--in-placewith--backup,-rmirroring each input tree under-o. An output never overwrites its input unless--in-place, and one larger than its input is skipped unless--force - cli: inputs: an argument that exists is a literal path, one that does not and has glob characters is expanded in-process and case-insensitively.
--files-fromwith-0,--include/--excludeunder-r,-for stdin to stdout - cli:
--max-widthand--max-height: fit inside the bounds, keep the aspect ratio, never enlarge. Thethumbnailpreset fits inside 512 x 512 - cli:
--keep-iccand--keep-metadata. By default an ICC profile is converted to sRGB and dropped and EXIF and XMP are stripped; EXIF orientation is applied either way - cli:
-jfiles in flight, bounded by an estimate of each file's peak memory, so a folder of large photos cannot exhaust the machine (ADR-0008). A file over the budget on its own runs alone with a warning - cli:
--jsonwrites one JSON Lines object per output and nothing else to stdout;-ndecodes and plans without encoding;-vshows search trials,-vvresolved codec options. Exit codes 0 (done), 1 (partial batch), 2 (arguments), 3 (nothing could be done) - cli: coloured per-file lines, a summary line after a batch and a progress bar on a terminal, coloured by stage;
--quiet,--progress,--colorandNO_COLOR - cli: a format with no encoder in this build is an error naming the feature or the release archive that has one, never a fallback to another format. A
rimagecodec name as the first argument prints the equivalentsqzerline - sqzer:
Sqzer, the library facade:decode,transformandencode, orrunfor the three in order, andencode_withto report progress to an observer.Outputcarries the bytes, the backend, its tier, the content class and the search report - sqzer: the perceptual target is the default: encoder quality is searched until the output scores SSIMULACRA2 70, in at most six encodes, starting from a seed table calibrated per backend
- sqzer: a format picked by content when none is given: AVIF for photos, lossless WebP for graphics (PNG in a build without a WebP encoder)
- sqzer: the colour stage over
moxcms(ADR-0007), the resize stage overfast_image_resize(Lanczos3 in linear light, premultiplied alpha) and the metadata stage. Float input is converted to 16-bit sRGB, clipped at display white, no tone mapping - codecs: portable encoders, pure Rust apart from
oxipng's vendoredlibdeflate(ADR-0002): JPEG overmozjpeg-rs, PNG overoxipng(the plainpngwriter onwasm32), lossless WebP overimage-webp, AVIF overravif - codecs: portable decoders: JPEG over
zune-jpeg, PNG overpng, WebP overimage-webp, AVIF overre_rav1d(desktop only), JPEG XL overjxl-oxide, GIF overgif, TIFF overtiff, BMP, TGA, ICO, QOI and PNM overimage's decoders, OpenEXR overexrand SVG throughresvg - codecs: the native tier, ADR-0004, one feature per library:
native-webp(lossy and lossless WebP overlibwebp),native-jxl(JPEG XL overlibjxl),native-avif(AVIF overlibavifandlibaom),native-jpegli(JPEG over jpegli) andnative-heif(HEIC input through ImageIO on macOS, WIC on Windows and a runtime-loadedlibheifon the other targets except musl, ADR-0005). A native encoder takes its format over from the portable one - codecs: the JPEG, WebP, JPEG XL, TIFF and HEIC decoders apply the image's orientation; PNG keeps EXIF but does not apply its orientation. Decoders keep an embedded ICC profile, except GIF, whose rare ICC extension is not read, and JPEG XL, which renders XYB and enumerated colour encodings to sRGB instead. JPEG, PNG, WebP and JPEG XL also keep EXIF and XMP, TIFF keeps XMP. The AVIF decoder reads none of ICC, orientation, EXIF or XMP, since
avif-parsedoes not expose them. Encoders embed what they can carry and say so inEncoderCaps - metrics: SSIMULACRA2 over
fast-ssim2andSearch, the target-quality bisection: a hard cap of six encodes, and a target the encoder cannot reach returns the best candidate withreached: false, never an error - metrics: seed tables for every lossy backend, portable and native, generated by
tools/calibratefrom CID22, GB82-SC and CLIC 2025. On a held-out split the search takes two to four encodes instead of four to six - core:
Imagewithu8,u16andf32samples and ICC, EXIF and XMP on the struct; theDecoder,EncoderandMetrictraits described byDecoderCapsandEncoderCaps;Registry,EncodeParams,Preset,Resize,Orientation, andErrorwithEncoderUnavailableandDecoderUnavailable - workspace: release binaries for six desktop targets with the native tier, built by
cargo-dist(ADR-0006), plus shell and PowerShell installers and a Homebrew formula,brew install sqzer-dev/tap/sqzer.nativeonsqzerandsqzer-climeans every backend the target can build and run; a singlenative-*feature is strict - workspace: golden SSIMULACRA2 tests for every encoder, so a dependency bump that degrades output fails CI; CI on the six desktop targets and
wasm32;cargo denywith a permissive licence allow-list
Install sqzer-cli 0.1.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/sqzer-dev/sqzer/releases/download/v0.1.0/sqzer-cli-installer.sh | shInstall prebuilt binaries via powershell script
powershell -ExecutionPolicy Bypass -c "irm https://github.com/sqzer-dev/sqzer/releases/download/v0.1.0/sqzer-cli-installer.ps1 | iex"Install prebuilt binaries via Homebrew
brew install sqzer-dev/tap/sqzerDownload sqzer-cli 0.1.0
| File | Platform | Checksum |
|---|---|---|
| sqzer-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| sqzer-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| sqzer-cli-x86_64-pc-windows-msvc.zip | x64 Windows | checksum |
| sqzer-cli-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| sqzer-cli-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| sqzer-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |