High-quality image resizer

Resize JPEG, PNG, WebP, or AVIF images locally in your browser. Add several images, choose one set of output options, then resize each image when you download it. Files are not uploaded.

    Processing #

    Each image keeps its aspect ratio and fits inside the maximum dimensions. Enlarge is off by default. Changing the settings does no work until you press Resize and download for an image.

    Processing stays in your browser. Images can be at most 8192 pixels per edge, 25 megapixels, and 64 MiB compressed. Animation and source metadata are not preserved. JPEG output replaces transparency with white.

    CLI #

    Resize a JPEG to fit within 1200 × 800 pixels, then encode it as lossy WebP:

    npx @qip.dev/qipx qip.dev run \
      image/jpeg/jpeg-to-ktx2-r8g8b8a8-srgb.wasm \
      image/ktx2/ktx2-r8g8b8a8-srgb-resize-down-lanczos3.wasm \
      -u width=1200 -u height=800 \
      image/ktx2/ktx2-r8g8b8a8-srgb-to-webp-lossy.wasm \
      -u quality=85 \
      < photo.jpg > thumbnail.webp
    

    The first run downloads the components from qip.dev. Later runs use the local copies. Omit one dimension to derive it from the source aspect ratio.

    The resize components accept and emit canonical RGBA8 sRGB image/ktx2. They are limited to 8192 pixels per axis and 25 megapixels, and reserve 287.4 MiB of fixed Wasm memory.

    The filters decode sRGB to linear light and premultiply alpha before sampling. They return straight-alpha sRGB bytes. Lanczos3 preserves detail well during reduction, but can ring around sharp high-contrast edges.

    Download #