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
- 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.

Before using this package, ensure that the following dependencies are included in your pubspec.yaml
:
dependencies:
image_background_remover: ^latest_version
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();
}
Don't forget to dispose the onnx runtime session :
@override
void dispose() {
BackgroundRemover.instance.dispose();
super.dispose();
}
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*/
You can now add a custom background color to images after removing the background.
Uint8List modifiedImage = await BackgroundRemover.instance.addBackground(
image: originalImageBytes,
bgColor: Colors.white, // Set your desired background color
);
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. |
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"
This package uses an offline model to process images, which is bundled with the application. This may increase the size of your app.
Contributions are welcome! If you encounter any issues or have suggestions for improvements, feel free to create an issue or submit a pull request.
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. 😊