如何获得抖动中的平均颜色?

时间:2020-04-14 20:39:07

标签: flutter dart colors average

在Flutter中,有调色板生成器软件包,但是这些软件包对于获得颜色平均值并不准确。

我想在颤动中实现色彩平均功能(飞镖) 我找到了一些获取平均颜色的代码。但我想转换为Flutter代码的dart代码。 我该如何做功能? 我想用Fileimage获得平均颜色 谢谢。

---------------------------这是我找到的代码。我想转换为dart(颤振)代码---------------------

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 :(得分:1)

代码几乎相同,在飞镖中它将变成这样:

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.width; 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);

我希望这会有所帮助。