铲斗加油

时间:2018-08-27 11:14:36

标签: dart flutter

我正在开发绘图应用程序,该应用程序也需要填充存储桶。 关于如何在Flutter中执行桶装的想法吗?

enter image description here

1 个答案:

答案 0 :(得分:4)

您将必须编写自己的算法。我认为您可以将this one移植到飞镖上。

您需要的一个基本条件是如何获取图像像素的颜色:

Color getPixelColor(ByteData rgbaImageData, int imageWidth, int imageHeight, int x, int y) {
  assert(x >= 0 && x < imageWidth);
  assert(y >= 0 && y < imageHeight);

  final byteOffset = x * 4 + y * imageWidth * 4;

  final r = rgbaImageData.getUint8(byteOffset);
  final g = rgbaImageData.getUint8(byteOffset + 1);
  final b = rgbaImageData.getUint8(byteOffset + 2);
  final a = rgbaImageData.getUint8(byteOffset + 3);

  return Color.fromARGB(a, r, g, b);
}

您可以像这样使用它:

Image image = ...;

final rgbaImageData = await image.toByteData(format: ui.ImageByteFormat.rawRgba);

print(getPixelColor(rgbaImageData, image.width, image.height, x, y));

按照相同的方案(setUint8)进行操作。