Как я могу получить средний цвет в флаттер? - PullRequest
0 голосов
/ 14 апреля 2020

Во флаттере есть пакет генератора палитры, но этот пакет не точен для получения среднего цвета.

Я хочу сделать функцию среднего цвета в флаттере (дротик). Я нашел некоторый код для получения среднего цвета. но я хочу конвертировать в дротик код флаттера. как мне сделать функцию? Я хочу получить средний цвет с помощью Fileimage, спасибо.

--------------------------- это код, который я нашел , Я хочу конвертировать в дротик (флаттер) код ---------------------

Bitmap bitmap = someFunctionReturningABitmap();
long redBucket = 0;
long greenBucket = 0;
long blueBucket = 0;
long pixelCount = 0;

for (int y = 0; y < bitmap.getHeight(); y++)
{
    for (int x = 0; x < bitmap.getWidth(); x++)
    {
        Color c = bitmap.getPixel(x, y);

        pixelCount++;
        redBucket += Color.red(c);
        greenBucket += Color.green(c);
        blueBucket += Color.blue(c);
        // does alpha matter?
    }
}

Color averageColor = Color.rgb(redBucket / pixelCount,
                                greenBucket / pixelCount,
                                blueBucket / pixelCount);

1 Ответ

0 голосов
/ 15 апреля 2020

Код почти идентичен, в дротике он будет выглядеть примерно так:

import 'package:image/image.dart' as img;

img.Image bitmap =
      img.decodeImage(new File('assets/images/keyboard.jpg').readAsBytesSync());

  int redBucket = 0;
  int greenBucket = 0;
  int blueBucket = 0;
  int pixelCount = 0;

  for (int y = 0; y < bitmap.height; y++) {
    for (int x = 0; x < bitmap.height; x++) {
      int c = bitmap.getPixel(x, y);

      pixelCount++;
      redBucket += img.getRed(c);
      greenBucket += img.getGreen(c);
      blueBucket += img.getBlue(c);
    }
  }

  Color averageColor = Color.fromRGBO(redBucket ~/ pixelCount,
      greenBucket ~/ pixelCount, blueBucket ~/ pixelCount, 1);

Надеюсь, это поможет.

...