Как рассчитать яркость из списка 8-байтового целого числа без знака, которое представляет изображение в дротике? - PullRequest
1 голос
/ 22 января 2020

Я хотел рассчитать яркость изображения UintList. Изображение, которое я использовал, выбрано с моего телефона (с помощью плагина image_picker во флаттере) Я попытался для l oop для каждого значения в этом списке и сделал это:

int r = 0, b = 0, g = 0, count = 0;
for (int value in imageBytesList) {
  /// The red channel of this color in an 8 bit value.
  int red = (0x00ff0000 & value) >> 16;

  /// The blue channel of this color in an 8 bit value.
  int blue = (0x0000ff00 & value) >> 8;

  /// The green channel of this color in an 8 bit value.
  int green = (0x000000ff & value) >> 0;
  r += red;
  b += blue;
  g += green;
  count++;
}
double result = (r + b + g) / (count * 3);

Я знаю, что результат должен представлять уровень яркости от 0 до 255, где 0 = полностью черный и 255 = полностью яркий. но, что я получаю, это действительно странные значения, такие как 0,0016887266175341332. Какие ошибки в расчетах я делаю? (Я знаю, что мой метод в корне неверен, но я не смог найти способ).

Виджет флаттера действительно конвертирует этот Uint8List из памяти в изображение с правильной высотой и шириной, используя конструктор Image.memory(). Что такое логика c за ней?

...