native_image_compress 0.3.2 copy "native_image_compress: ^0.3.2" to clipboard
native_image_compress: ^0.3.2 copied to clipboard

Compress images to JPEG, PNG, WebP, HEIC, or AVIF using the platform's native encoders.

example/lib/main.dart

import 'dart:typed_data';

import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:native_image_compress/image_compress.dart';

import 'advanced_page.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) =>
      const MaterialApp(home: QuickStartPage());
}

class QuickStartPage extends StatefulWidget {
  const QuickStartPage({super.key});

  @override
  State<QuickStartPage> createState() => _QuickStartPageState();
}

class _QuickStartPageState extends State<QuickStartPage> {
  Uint8List? _original;
  Uint8List? _compressed;

  Future<void> _pickAndCompress() async {
    final picked = await ImagePicker().pickImage(source: ImageSource.gallery);
    if (picked == null) return;

    final original = await picked.readAsBytes();
    final compressed = await compressToJpeg(original, quality: 80);
    setState(() {
      _original = original;
      _compressed = compressed;
    });
  }

  @override
  Widget build(BuildContext context) {
    final original = _original;
    final compressed = _compressed;

    return Scaffold(
      appBar: AppBar(
        title: const Text('native_image_compress'),
        actions: [
          IconButton(
            icon: const Icon(Icons.tune),
            tooltip: 'Advanced example',
            onPressed: () => Navigator.of(context).push(
              MaterialPageRoute(builder: (_) => const AdvancedPage()),
            ),
          ),
        ],
      ),
      body: Center(
        child: Padding(
          padding: const EdgeInsets.all(24),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              FilledButton.icon(
                onPressed: _pickAndCompress,
                icon: const Icon(Icons.image),
                label: const Text('Pick & compress'),
              ),
              if (compressed != null && original != null) ...[
                const SizedBox(height: 24),
                Image.memory(compressed, height: 220),
                const SizedBox(height: 12),
                Text('${original.length ~/ 1024} KB → ${compressed.length ~/ 1024} KB'),
              ],
            ],
          ),
        ),
      ),
    );
  }
}
1
likes
160
points
439
downloads

Documentation

API reference

Publisher

verified publishernexosphere.xyz

Weekly Downloads

Compress images to JPEG, PNG, WebP, HEIC, or AVIF using the platform's native encoders.

Repository
View/report issues

Topics

#image #compress #webp #heic #avif

License

MIT (license)

Dependencies

flutter, meta, plugin_platform_interface

More

Packages that depend on native_image_compress

Packages that implement native_image_compress