Image Background Remover - Flutter

βŒ— Overview

A Flutter package that removes the background from images using an ONNX model. The package provides a seamless way to perform image processing, leveraging the power of machine learning through ONNX Runtime. This package works completely offline without any external API dependencies


🌟 Features

  • Remove the background from images with high accuracy.
  • Works entirely offline, ensuring privacy and reliability.
  • Lightweight and optimized for efficient performance.
  • Simple and seamless integration with Flutter projects.
  • Add a custom background color to images.
  • Customizable threshold value for better edge detection.

πŸ”­ Example

Overview

Getting Started

πŸš€ Prerequisites

Before using this package, ensure that the following dependencies are included in your pubspec.yaml:

dependencies:
  image_background_remover: ^latest_version

Usage

Initialization

Before using the removeBg method, you must initialize the ONNX environment:

    import 'package:image_background_remover/image_background_remover.dart';

    @override
    void initState() {
        super.initState();
        BackgroundRemover.instance.initializeOrt();
    }

Dispose

Don't forget to dispose the onnx runtime session :

  @override
  void dispose() {
    BackgroundRemover.instance.dispose();
    super.dispose();
  }

Remove Background

To remove the background from an image:

import 'dart:typed_data';
import 'package:image_background_remover/image_background_remover.dart';

Uint8List imageBytes = /* Load your image bytes */;
ui.Image resultImage = await BackgroundRemover.instance.removeBg(imageBytes);
/* resultImage will contain image with transparent background*/

πŸ†• New Feature: Add Background Color

You can now add a custom background color to images after removing the background.

Usage:

Uint8List modifiedImage = await BackgroundRemover.instance.addBackground(
  image: originalImageBytes,
  bgColor: Colors.white, // Set your desired background color
);

API

Methods

Method Description Parameters Returns
initializeOrt() Initializes the ONNX runtime environment. Call this method once before using removeBg. None Future<void>
removeBg(Uint8List imageBytes, { double threshold = 0.5, bool smoothMask = true, bool enhanceEdges = true }) Removes the background from an image. imageBytes - The image in byte array format.

threshold - The confidence threshold for background removal (default: 0.5). A higher value removes more background, while a lower value retains more foreground.

smoothMask - Whether to apply bilinear interpolation for smoother edges (default: true).

enhanceEdges - Whether to refine mask boundaries using gradient-based edge enhancement (default: true).
Future<ui.Image> - The processed image with the background removed.
addBackground({required Uint8List image, required Color bgColor}) Adds a background color to the given image. image - The original image in byte array format.
bgColor - The background color to be applied.
Future<Uint8List> - The modified image with the background color applied.

⛔️ iOS Issue

Exception: ONNX session not initialized (iOS Release Mode & TestFlight)

To resolve this issue, update the following settings in Xcode:

Open Xcode and navigate to:
Runner.xcodeproj β†’ Targets β†’ Runner β†’ Build Settings

Under the Deployment section:
Set "Strip Linked Product" to "No"
Set "Strip Style" to "Non-Global-Symbols"

⚠️ Warning

This package uses an offline model to process images, which is bundled with the application. This may increase the size of your app.

πŸ”— Contributing

Contributions are welcome! If you encounter any issues or have suggestions for improvements, feel free to create an issue or submit a pull request.

β˜• Support This Project

If you find this package helpful and want to support its development, you can buy me a coffee! Your support helps maintain and improve this package. 😊

Buy Me A Coffee