1.00
v1 is a raw win32 API app with an entirely custom-drawn UI. unlike old version which was purely a GUI shell that calls out its external core
, v1 embeds the optimization pipeline directly. far more ambitious than its predecessors, v1 introduces new features that make it an image editor specialized in image optimization
viewer
pinga has now a slider to compare the original against the optimized version side by side. a set of keyboard shortcuts keeps you in flow. it displays the image with adjustable zoom (mouse wheel, automatic fit-to-window via fit zoom
), a pixel grid shown automatically past a certain zoom level — pixel-art editor style rendering. beyond that, the viewer also lets you edit pixels directly, giving you hands-on control over the image itself
lossy compression
- auto — analyses the source image (grayscale content, transparency, color count, flat vs. gradient vs. picture vs. text regions) to classify it, then automatically delegates to either the palettizer (for palette-friendly, flat-color images) or the filter method (for photographic/gradient images) — the user does not pick a method, pinga picks it based on image content
- filter — runs a predicter pass that reworks the PNG filter/prediction data at a strength driven by the quality percentage, trading fidelity for a smaller residual stream without reducing the number of colors
- palettizer — converts the image to an indexed palette: quality maps to the dithering strength while the number of colors would be editable through a dedicated action (and window)
these features stay hidden by default and only appear once user have explicitly turned them on in the settings
- rdo — rate-distortion optimization passes the quality value (1–100) directly to an rdo encoder that adjusts pixel values to make the subsequent deflate compression more efficient
- near-lossless — runs a
quantizer
pass driven by the quality percentage that nudges pixel values toward more compressible patterns while staying visually close to the original - color quantizer — palette-reduction mode where the user directly sets the target color count (257 to 8192) and a dithering strength, rather than deriving them from the quality slider, giving finer control over the palette/size trade-off
- denoiser — applies a noise-reduction pass first then re-runs the filter/predicter pass on the denoised result — useful for photographic images where noise inflates the compressed size
palettizer & quantizer
- perceptual space (OKLab) for both clustering and dithering distance
- multistart k-means with weighted centroids initialized from priority-based seeding (population + local density)
- exact kd-tree nearest-neighbor for both clustering assignment and dithering
- alpha as a first-class 4th distance axis with adaptive weighting based on image transparency complexity
- multithreaded k-means and pixel-mapping passes
pending...