How to detect if image is all black using flutter?

335

One way you can try is using palette_generator package to extract colors in the image and then computing average luminance of the image, like so.

import 'package:palette_generator/palette_generator.dart';

  Future<bool> isImageBlack(ImageProvider image) async {
    final double threshold = 0.2; //<-- play around with different images and set appropriate threshold
    final double imageLuminance = await getAvgLuminance(image);
    print(imageLuminance);
    return imageLuminance < threshold;
  }

  Future<double> getAvgLuminance(ImageProvider image) async {
    final List<Color> colors = await getImagePalette(image);
    double totalLuminance = 0;
    colors.forEach((color) => totalLuminance += color.computeLuminance());
    return totalLuminance / colors.length;
  }
Share:
335
Ken Verganio
Author by

Ken Verganio

Updated on December 29, 2022

Comments

  • Ken Verganio
    Ken Verganio over 1 year

    I'm building an app that user required to send a selfie but some user just block the camera to take a picture and the result is all black, is there a way to detect if image is black?

    I'm thinking of using face detection but I haven't tried it and its way to much for my simple app.