getThemeFromImage function

ThemeMode getThemeFromImage(
  1. File imageFile
)

Implementation

ThemeMode getThemeFromImage(File imageFile) {
  final fileData = imageFile.readAsBytesSync();
  final image = img.decodeImage(fileData);

  if (image == null) {
    return ThemeMode.dark;
  }

  // 画像を縮小
  final resizedImage = img.copyResize(
    image,
    width: image.width ~/ 2,
    height: image.height ~/ 2,
  );

  var totalLuminance = 0.0;

  // 各ピクセルの輝度を計算
  for (var y = 0; y < resizedImage.height; y++) {
    for (var x = 0; x < resizedImage.width; x++) {
      final pixelColor = resizedImage.getPixel(x, y);
      totalLuminance += img.getLuminance(pixelColor) / 255;
    }
  }

  // 平均輝度を計算
  final averageLuminance =
      totalLuminance / (resizedImage.width * resizedImage.height);

  // テーマモードを決定
  return averageLuminance > 0.5 ? ThemeMode.light : ThemeMode.dark;
}