jpeg_turbo_resizer 0.0.2 copy "jpeg_turbo_resizer: ^0.0.2" to clipboard
jpeg_turbo_resizer: ^0.0.2 copied to clipboard

PlatformWindows

A custom Flutter plugin for Windows that enables fast and efficient image resizing using the libjpeg-turbo library. This initial release focuses on resizing JPEG images with high performance. More fea [...]

JPEG Turbo Resizer Flutter Plugin #

A custom Flutter plugin for Windows that enables fast and efficient image resizing using the libjpeg-turbo library. This plugin focuses on processing JPEG images with high performance.

Features #

  • Fast JPEG image resizing
  • Windows platform support
  • Simple API for easy integration
  • User-friendly image selection and output specification

Supported File Types #

This plugin uses libjpeg-turbo, which primarily supports JPEG file formats. Specifically, it can handle:

  • JPEG (.jpg, .jpeg)
  • JPEG 2000 (.jp2, .j2k) - read-only support
  • JFIF (.jfif)

Note: While libjpeg-turbo can read some other formats like PPM, BMP, and TIFF, this plugin currently focuses on JPEG processing. Future updates may expand support for additional input formats.

Installation #

Add this to your package's pubspec.yaml file:

dependencies:
  jpeg_turbo_resizer: ^0.0.1
  file_picker: ^5.2.10
  path_provider: ^2.0.15

Then run:

flutter pub get

Usage #

Import the necessary packages in your Dart code:

import 'package:jpeg_turbo_resizer/jpeg_turbo_resizer.dart';
import 'package:file_picker/file_picker.dart';
import 'package:path_provider/path_provider.dart';

To resize a JPEG image:

JpegTurboResizer turboResizer = JpegTurboResizer();
final result = await turboResizer.resizeJpeg(
  inputPath,
  outputPath,
  300,  // Max resolution
);

if (result == 0) {
  print('Image resized successfully!');
} else {
  print('Error resizing image: $result');
}

Example #

Here's an interactive widget that demonstrates how to use the plugin:

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:jpeg_turbo_resizer/jpeg_turbo_resizer.dart';
import 'package:file_picker/file_picker.dart';
import 'package:path_provider/path_provider.dart';

class ResizeImageWidget extends StatefulWidget {
  @override
  _ResizeImageWidgetState createState() => _ResizeImageWidgetState();
}

class _ResizeImageWidgetState extends State<ResizeImageWidget> {
  String? _inputImagePath;
  String? _resizedImagePath;
  String _outputFileName = 'resized_image.jpg';
  final _formKey = GlobalKey<FormState>();

  Future<void> _pickImage() async {
    FilePickerResult? result = await FilePicker.platform.pickFiles(
      type: FileType.custom,
      allowedExtensions: ['jpg', 'jpeg', 'jp2', 'j2k', 'jfif'],
    );

    if (result != null) {
      setState(() {
        _inputImagePath = result.files.single.path;
      });
    }
  }

  Future<void> _resizeImage() async {
    if (_formKey.currentState!.validate() && _inputImagePath != null) {
      final directory = await getApplicationDocumentsDirectory();
      final outputPath = '${directory.path}/$_outputFileName';

      JpegTurboResizer turboResizer = JpegTurboResizer();
      final result = await turboResizer.resizeJpeg(
        _inputImagePath!,
        outputPath,
        300,  // Max resolution
      );

      if (result == 0) {
        setState(() {
          _resizedImagePath = outputPath;
        });
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('Image resized successfully!')),
        );
      } else {
        ScaffoldMessenger.of(context).showSnackBar(
          SnackBar(content: Text('Error resizing image: $result')),
        );
      }
    }
  }

  @override
  Widget build(BuildContext context) {
    // ... (rest of the widget build method remains the same)
  }
}

To use this widget, simply add it to your app's widget tree:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('JPEG Turbo Resizer Example')),
        body: ResizeImageWidget(),
      ),
    );
  }
}

This example allows the user to:

  1. Select an input JPEG image using a file picker.
  2. Specify the output file name.
  3. Resize the image and display the result.

Platform Support #

Currently, this plugin only supports Windows. Future updates may include support for additional platforms.

Dependencies #

This plugin requires the libjpeg-turbo library to be installed on the system. Make sure it's properly set up before using the plugin.

Additionally, this example uses the following Flutter packages:

  • file_picker: For selecting input images.
  • path_provider: For getting the application documents directory.

Make sure to add these dependencies to your pubspec.yaml file.

Contributing #

Contributions are welcome! Please feel free to submit a Pull Request.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

1
likes
140
points
21
downloads

Publisher

unverified uploader

Weekly Downloads

A custom Flutter plugin for Windows that enables fast and efficient image resizing using the libjpeg-turbo library. This initial release focuses on resizing JPEG images with high performance. More features, such as additional image processing capabilities, will be added in future updates.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, path, plugin_platform_interface

More

Packages that depend on jpeg_turbo_resizer