png_minifier 1.0.0 copy "png_minifier: ^1.0.0" to clipboard
png_minifier: ^1.0.0 copied to clipboard

Minify PNG images in pure Dart: many optimisation strategies compete and the smallest result that meets the quality target wins. Lossless by default, bounded-error palette quantisation on request; det [...]

example/png_minifier_example.dart

import 'dart:io';

import 'package:png_minifier/png_minifier.dart';

/// Minifies a PNG three ways and prints what each one gave.
///
///     dart run example/png_minifier_example.dart image.png
void main(List<String> args) {
  if (args.isEmpty) {
    stderr.writeln(
      'usage: dart run example/png_minifier_example.dart '
      '<image.png>',
    );
    exitCode = 64;
    return;
  }
  final bytes = File(args.first).readAsBytesSync();

  // Same pixels, fewer bytes (the default).
  final lossless = const PngMinifier().minify(bytes);
  print('lossless:  $lossless');

  // A preset: popular colours exact, rare ones within 12 levels.
  final pixelArt = PngMinifier.preset(PngPreset.pixelArt).minify(bytes);
  print('pixel art: $pixelArt');

  // Custom quality: PSNR of at least 45 dB, exhaustive search.
  final custom = const PngMinifier(
    PngMinifyOptions(quality: PngQuality.psnr(45), effort: PngEffort.max),
  ).minify(bytes);
  print('psnr 45:   $custom (psnr ${custom.psnr.toStringAsFixed(1)} dB)');

  File('${args.first}.min.png').writeAsBytesSync(lossless.bytes);
}
1
likes
145
points
--
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Minify PNG images in pure Dart: many optimisation strategies compete and the smallest result that meets the quality target wins. Lossless by default, bounded-error palette quantisation on request; deterministic on the VM, JS and WebAssembly; with presets and a CLI.

Repository (GitHub)
View/report issues

Topics

#png #image #compression #optimization #quantization

License

Apache-2.0 (license)

Dependencies

archive, args

More

Packages that depend on png_minifier